Windbg获取.dmp文件工作

时间:2014-07-03 07:39:23

标签: dll windbg debug-symbols

我有一个程序使用不同的dll并且崩溃了。 我试图使用WinDbg解决崩溃的原因,但到目前为止我没有运气。

我有.dmp文件,但我尝试过addig作为符号路径,我尝试在符号路径中添加dll以及其他一些东西,但它一直告诉我它找不到myprogram.dmp / symbols等或只是找不到符号。

使用.dmp文件的正确方法是什么?

谢谢我是新手,找到在线文档似乎只对没有DLL和其他非内置DLL的程序有所帮​​助。

部分错误示例:

  

* 错误:找不到符号文件。默认导出mydll.dll的符号

     

* 错误:模块加载已完成但无法为myprogram.dll加载符号

     

找不到PDB:c:\ users \ me \ desktop \ myprogram.dmp \ symbols \ dll \ ole32.pdb

我设法加载默认的窗口符号,将下载的符号添加到符号路径中。我必须将我在项目中使用的DLL添加到符号文件夹中吗?

  

PRIMARY_PROBLEM_CLASS:WRONG_SYMBOLS

     

C:\用户\我\桌面\分配\ 4。 DPI-600测试\ DumpFileDebugging \ symbols

1 个答案:

答案 0 :(得分:1)

首先,为您的私人符号设置路径。我们称之为X:\ mysymbols。将所有PDB复制到该文件夹​​中,就像平面列表一样。在WinDbg中,将符号路径设置为该文件夹

.sympath X:\mysymbols

接下来,让WinDbg找到微软的东西。创建一个文件夹X:\ microsymbols。什么都不放在里面,不要使用与X:\ mysymbols相同的文件夹。将该文件夹添加到符号路径:

.symfix+ X:\microsymbols

现在一切都设置正确,告诉调试器刷新:

.reload

在极少数情况下只有

.reload /f; ld *

帮助。

如果你仍然不走运,请尝试

!sym noisy

以便调试器告诉您符号究竟出了什么问题。查找错误消息并尝试修复它们。

如果仍然出错,您可能根本就没有正确的PDB。 PDB通过一种散列/时间戳与模块(DLL和EXE)相关联。所以要么获得正确的PDB,要么尝试

.symopt+ 0x40

强制调试器在不检查哈希的情况下加载他得到的任何东西。请注意,如果它们离得太远,那么它们可能会产生误导。