gpt4 book ai didi

c++ - 为什么 UMDH 找不到我的符号?我可以在没有它们的情况下解释堆栈跟踪吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:04 27 4
gpt4 key购买 nike

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

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 的符号:

// Debug library initialized ...
DBGHELP: ObjectCommunicator - no symbols loaded
DBGHELP: ntdll - public symbols
C:\Symbols\ntdll.pdb\F7024C7F15FE4BEA992FF38BE58AC11C2\ntdll.pdb

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

/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):

/nologo /subsystem:windows /incremental:no /pdb:"..\Bin\Release/ObjectCommunicator.pdb" /debug /machine:I386 /out:"..\Bin\Release/ObjectCommunicator.exe" /IGNORE:4089 

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

+   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 做点什么,把它变成有意义的引用吗?

最佳答案

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

关于c++ - 为什么 UMDH 找不到我的符号?我可以在没有它们的情况下解释堆栈跟踪吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com