我正在尝试使用WinDbg调试我的.NET应用程序和C ++非托管内存分配。
当我尝试运行!heap 命令时,收到以下错误消息:
0:022> !heap
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\system32\KERNEL32.dll -
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_HEAP_ENTRY ***
*** ***
*************************************************************************
Invalid type information
如何解决此错误?
答案 0 :(得分:5)
使用以下命令修复符号路径:
.symfix
.reload
答案 1 :(得分:3)
配置符号服务器。按照步骤:
有关详细信息,请参阅here。
答案 2 :(得分:1)
您需要为应用程序设置符号,并将其指向Windows符号服务器。对于Windows符号服务器,你可以做史蒂夫所说的。
“SRV * C:\ *符号的http://msdl.microsoft.com/download/symbols”
之后,设置!sym noisy,它将在详细模式下进行符号加载。
执行.reload,这可以让您知道哪些符号是必需的但未找到。
如果您已经知道应用程序的pdbs位置,请将符号路径指向该位置,并重复上述步骤以确保所有必需的符号都被加载。