首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么UMDH找不到我的符号?没有它们,我可以解释堆栈跟踪吗?

为什么UMDH找不到我的符号?没有它们,我可以解释堆栈跟踪吗?
EN

Stack Overflow用户
提问于 2012-11-13 05:31:45
回答 1查看 1.6K关注 0票数 1

我正在尝试使用UMDH调试内存泄漏。但是,它从来没有成功地加载过符号。我很确定我的设置是正确的-

代码语言:javascript
复制
C:\Documents and Settings\Administrator>set _
_NT_SYMBOL_PATH=SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;E:\mysymbols

C:\Documents and Settings\Administrator>dir e:\mysymbols
 Volume in drive E is DataApps
 Volume Serial Number is F6F5-37AE

 Directory of e:\mysymbols

11/08/2012  03:20 PM    <DIR>          .
11/08/2012  03:20 PM    <DIR>          ..
11/08/2012  10:02 AM         2,630,656 Gen2EAPI.pdb
11/08/2012  10:07 AM         4,555,776 ObjectCommunicator.pdb
11/08/2012  10:01 AM         2,475,008 ObjSrvCommAPI.pdb
11/08/2012  10:02 AM         3,761,152 ScpmAPI.pdb
               4 File(s)     13,422,592 bytes
               2 Dir(s)  803,125,231,616 bytes free

但是UMDH拒绝为ObjectCommunicator.exe加载符号:

代码语言:javascript
复制
// Debug library initialized ...
DBGHELP: ObjectCommunicator - no symbols loaded
DBGHELP: ntdll - public symbols  
        C:\Symbols\ntdll.pdb\F7024C7F15FE4BEA992FF38BE58AC11C2\ntdll.pdb

ObjectCommunicator.exe就是使用这些选项构建的(使用vc 6.0。是的-它很旧,但升级不是一个选择):

代码语言:javascript
复制
/nologo /MD /W3 /GR /GX /Zi /Od /I "..\Scpm Api" /I "..\ScpmImpl" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D MODULE_NAME=\"ObjectCommunicator\" /Fp"Release/ObjectCommunicator.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c 

并与这些选项相关联(减去一些.libs):

代码语言:javascript
复制
/nologo /subsystem:windows /incremental:no /pdb:"..\Bin\Release/ObjectCommunicator.pdb" /debug /machine:I386 /out:"..\Bin\Release/ObjectCommunicator.exe" /IGNORE:4089 

为什么UMDH不能加载我的符号?有什么方法可以调试它吗?如果不是,有没有办法这样解释UMDH堆栈跟踪:

代码语言:javascript
复制
+   42432 (  45424 -   2992)    167 allocs  BackTraceAEB
+     156 (    167 -     11)    BackTraceAEB    allocations

ntdll!RtlAllocateHeapSlowly+41
ntdll!RtlAllocateHeap+E9F
msvcrt!malloc+6C
MFC42!operator new+15
ObjectCommunicator!???+0 : 402F71
ObjectCommunicator!???+0 : 43D6AC
ObjectCommunicator!???+0 : 43C523
ObjectCommunicator!???+0 : 43C3E4
MFC42!_AfxThreadEntry+FB
msvcrt!_endthreadex+A3
kernel32!BaseThreadStart+34

特别是"ObjectCommunicator!???+0 : 43C3E4“是什么意思?例如,我能对CDB做些什么,把它变成一个有意义的引用吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 02:41:32

事实证明,我只需要真正安装调试工具。“高级Windows调试”声称这些工具可以通过副本安装,但这似乎不适用于UMDH。在使用官方安装程序进行安装后,我能够让UMDH查看符号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13351892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档