当前位置:  开发笔记 > 运维 > 正文

WinDbg符号解析

如何解决《WinDbg符号解析》经验,为你挑选了1个好方法。

使用WinDbg时,应该在哪里放置私有符号文件(pdb?)?

我的情况是:我有一个我想调试的DLL.我有这个DLL的源代码和符号文件.这个DLL由另一个DLL(我没有符号或源代码)调用,而这个DLL又由EXE调用(我也没有符号或源代码).

我的问题是我收到了警告

***警告:无法验证C:\ TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dll的校验和

我认为这个警告是我在调用堆栈中获取以下类型的消息的原因:

MYDLL!ACLASS ::机能缺失+ SomeHexAddress

我的文件结构如下所示:

exe:C:\ TheProgram\program.exe

调用dll:C\TheProgram\SomeSubfolder\caller.???

我要调试的DLL:C:\ TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dll

注意:我将符号文件路径和源文件路径设置为生成调试DLL的位置,在我的工作区中与exe的不同驱动器上..但我确实复制了pdb + map文件并将其放在我想要的dll上调试..



1> AaronBa..:

这么晚才回复很抱歉.
在您的帖子中,您提到您看到以下错误消息.

*** WARNING: Unable to verify checksum for C:\TheProgram\SomeSubfolder\AnotherSubfolder\MyDll.dll

你还问了一个问题,"我在哪里将我的DLL符号放在符号路径中?"

以下是对第一个问题的回复:

识别不匹配符号的步骤.

    !sym吵闹

    .reload

    x MyDll!*class*
    *这会重新加载你的dll,或者你可以输入kb来显示DLL的调用堆栈,它也应该加载它.

    !sym quiet
    *重置回原来的安静符号加载

你也可以跑

0:001> lmv m myDll  *(and examine the Checksum)

注意:如果您有校验和,则Windbg可以将DLL的校验和与PDB的校验和进行匹配.每个开发环境都有不同的方式来生成校验和.

以下是关于PDB放置位置的问题的回答

如果将MyDll.pdb添加到符号存储中,则可以使用以下语法

.sympath SRV*c:\symcache*http://msdl.microsoft.com/download/symbols 

正如罗杰上面所说的......

但是,如果您只是在本地使用PDB,则可能需要先将路径放到PDB,然后再转到符号服务器,如下所示

.sympath C:\TheProgram\SomeSubfolder\AnotherSubfolder\;SRV*c:\symcache*http://msdl.microsoft.com/download/symbols

这样,在尝试使用符号服务器缓存之前,Windbg应该在您的SomSubFolder目录中看起来是本地的.

谢谢你,亚伦

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有