调试重命名的DLL?

时间:2015-07-27 08:42:53

标签: debugging windbg symbols

我在尝试调试DLL时遇到问题,该DLL在后期构建过程中已重命名:WinDBG无法加载正确的符号(pdb文件)。

示例:
原始文件名为:abc.dll
创建的PDB名为:abc.pdb
在构建后的过程中,DLL被重命名为' ab.DLL'。

由于某些原因,在调试时我可以看到模块apears为' a_b.dll' (连字符被下划线取代,不知道为什么会发生这种情况)。此外,WinDBG无法加载其符号。

我尝试ld a_b /f abc,并尝试将PDB重命名为' a_b.pdb',然后调用{{1}但是这也没有用。

所有这一切都发生在我的.reload /f /i a_b构建中,它被设置为添加debug-info并创建PDB,就像它一样。 / p>

1 个答案:

答案 0 :(得分:3)

PDB的名称是DLL的一部分。重命名DLL不会更改其内容,因此重命名PDB也不起作用。相反,请保留原始名称。

确保您的符号设置正确,例如使用Microsoft符号和您自己的符号:

.symfix c:\debug\symbols
.sympath+ c:\path_to\myproject\bin\Release
.reload

另外,不要担心WinDbg中的模块名称。它取代了一些特殊字符,但不会影响符号加载。如果您仍然无法获取符号,请启用符号调试输出

!sym noisy

这应显示WinDbg尝试从中加载符号的路径和文件名。检查您的位置是否包含在内。如果没有,请通过.sympath+添加。完成后,通过

关闭符号调试
!sym quiet

此命令相当于

.symopt+ 0x80000000    *** noisy
.symopt- 0x80000000    *** quiet