尝试读取转储时出现"无法加载符号"
我有一个有时会在Win XP计算机上导致BSOD的应用程序。为了找出更多信息,我加载了生成的* .dmp文件(来自C:\ Windows \ Minidump),但是在进行大量读数时却得到了此消息:
********************************************************************* * Symbols can not be loaded because symbol path is not initialized. * * * * The Symbol Path can be set by: * * using the _NT_SYMBOL_PATH environment variable. * * using the -y <symbol_path> argument when starting the debugger. * * using .sympath and .sympath+ * *********************************************************************
这是什么意思,我该如何"修复"它?
解决方案
回答
实际上,我们需要将这些符号下载到计算机上,或者如果我们在调试时在线,则可以将其配置为随时下载。
这是详细讨论此问题的链接:http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx
回答
快速答案是
c:>设置_NT_SYMBOL_PATH = SRV * C:\ WINDOWS \ Symbols * http://msdl.microsoft.com/download/symbols
在开始windbg之前。
回答
我通常会转到"系统"控制面板,然后依次单击"高级"选项卡和"环境"。然后,我们可以添加必需的_NT_SYMBOL_PATH
变量。这样,在运行WinDbg之前,我们无需在命令行上执行任何操作。
Staffan建议的srv * C:\ Windows \ Symbols * http://msdl.microsoft.com/download/symbols的设置很好。不过,我通常更喜欢使用自己的配置文件来存储符号(因此,我不需要编辑
C:\ Windows \ Symbols的权限,因为出于安全卫生的考虑,我故意以受限用户身份运行)。因此(以我为例),我的" _NT_SYMBOL_PATH"是" srv * C:\ Documents and Settings \ cky \ symbols * http
:///msdl.microsoft.com/download/symbols"。
希望这可以帮助。 :-)
回答
正如@Vaibhav指出的,我们实际上需要下载这些符号并配置windbg来使用它们。
另请注意以下几点:
!sym noisy-激活噪声符号加载
lm v-与" m"参数一起使用以查看已加载模块的信息。
lme D sm列出所有不带符号的模块。
回答
更快的答案:
!symfix
但这只会影响当前的windbg / ntsd / cdb / kd。