WinDbg缺少托管代码的符号

时间:2009-09-10 17:55:43

标签: windbg symbols

我遇到问题,让WinDbg将PDB文件用于我的.NET DLL文件。 我正在查看的挂起转储来自生产版本,但是我从相同代码的调试版本中获得了PDB文件。

我将符号路径设置为包含本地文件夹和Microsoft符号服务器。

C:\websymbols\foo;srv*c:\websymbols*http://msdl.microsoft.com/download/symbols

我将所有PDB文件都放在C:\websymbols\foo中。但是,托管堆栈列表不包含任何方法名称。

重新加载.reload /f,告诉我:

DBGHELP: No debug info for FOO.dll.  Searching for dbg file
SYMSRV:  c:\websymbols\foo\FOO.dbg\49B7F17C10000\FOO.dbg not found
SYMSRV:  c:\websymbols\FOO.dbg\49B7F17C10000\FOO.dbg not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/FOO.dbg/49B7F17C10000/FOO.dbg not found
DBGHELP: .\FOO.dbg - file not found
DBGHELP: .\dll\FOO.dbg - path not found
DBGHELP: .\symbols\dll\FOO.dbg - path not found
DBGHELP: FOO.dll missing debug info.  Searching for pdb anyway
DBGHELP: Can't use symbol server for FOO.pdb - no header information available
DBGHELP: FOO.pdb - file not found
*** WARNING: Unable to verify checksum for FOO.dll
*** ERROR: Module load completed but symbols could not be loaded for FOO.dll
DBGHELP: FOO - no symbols loaded

在测试环境中将WinDbg附加到服务时,托管堆栈显示方法名称正常。转储内存,并在本地分析DMP文件我没有看到托管堆栈中的名称。我可能做错了什么?

3 个答案:

答案 0 :(得分:7)

您需要完全相同的PDB文件。调试符号不适用于零售转储。并且您需要完全相同构建的PDB文件。

每当你向野外发布时,你的构建团队应该存储私有PDB文件以供参考,以防你六个月后必须盯着转储......

答案 1 :(得分:3)

现在你无能为力。正如John Robbins says

  

最重要的是   开发人员需要知道:PDB文件是   和源代码一样重要! ... 我有   曾经无数公司帮忙   他们调试那些花费数百的bug   几千美元,没人能   找到构建的PDB文件   在生产服务器上运行。   没有匹配的PDB文件你   刚刚进行了调试挑战   几乎不可能。

你可以用一个名为ChkMatch的邪恶工具试试你的运气,愚弄VS以接受你抛出的任何PDB。只要知道机会接近于零,你就会得到任何有意义的堆栈 - PE布局对代码更改非常敏感,技术上甚至两个相同来源的版本都是not guaranteed to give the same PE

[编辑:]抱歉,您注意到您使用的是WinDBG。在那种情况下,正如Remus所说,.reload / f / i可以实现相同的技巧(具有相同的风险)。

答案 2 :(得分:1)

好的,我问了一个错误的问题。我甚至不需要.NET代码的符号(正如Remus指出的那样)。所以这不是我的问题的答案,但它是我的问题的解决方案,这似乎与WinDbg正在运行的机器上的.NET构建有关。

.chain告诉我这个时,我得到了有意义的堆栈信息:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos: image 2.0.50727.**1433**, API 1.0.0, built Tue Oct 23 20:41:30 2007

(与服务器上的转储相同。)

!clrstack告诉我的机器上运行时,我没有获得.chain地址以外的任何信息:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos: image 2.0.50727.**3053**, API 1.0.0, built Fri Jul 25 07:08:38 2008