2010-01-04 36 views
2

有没有从WinDbg的方式,而不使用DbgEng API显示所有加载模块的符号服务器路径(即PdbSig70 and PdbAge)?WinDbg,显示已加载模块的符号服务器路径(即使符号未加载)?

我知道

lml 

做这行,其符号已经加载的模块。我想知道这些路径的未加载以便诊断问题。任何人都知道这是可能的,而无需使用DbgEng API?

编辑:

我也知道,你可以使用

!sym noisy 

以获取有关符号装入错误消息。虽然这确实有帮助的输出是交错的,我想,是不是简单明了,如“LML”

回答

2

SYM嘈杂和均安静可以开启符号加载额外的输出等输出,即:!

!sym noisy 
.reload <dll> 
X <some symbol in that DLL to cause a load> 
!sym quiet 

当调试器尝试加载PDB时,您将看到它尝试加载的每条路径以及PDB的未找到或被拒绝。

+0

是,但此得到以迂回的方式的信息,并需要很多解析以提取所需的信息,特别是当被加载大量模块组成。 – 2010-01-04 21:40:49

1

据我所知,windbg没有现成的解决方案。 你的选择将是写一个漂亮的脚本或扩展取决于你最适合的地方。

这是在windbg作为一个脚本是非常可行的。你所追求的信息在PE调试目录中有描述。

这是一个link的C++示例代码,详细介绍如何提取有用的信息(如您的案例中的符号文件的名称)。适应它windbg脚本应该是没有汗水。

这是另一个有用的pointer与大量的自动windbg信息。具体来说,它讨论了将参数传递给windbg脚本的方法(这对您的情况也很有用,可以从加载的模块迭代循环中调用通用的调试信息提取代码)。

+0

感谢您的链接,我将不得不学习代码,但一目了然它看起来很有用 – 2010-01-06 17:16:57