调试重命名的DLL?

前端之家收集整理的这篇文章主要介绍了调试重命名的DLL?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在尝试调试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’,然后调用.reload / f / i a_b,但这也无法正常工作.所有这些发生在我的Release版本中,它被设置为添加debug-info并创建PDB,就像它一样.

解决方法

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

猜你在找的Windows相关文章