WinDbg, display Symbol Server paths of loaded modu

2019-07-21 01:20发布

Is there a way from WinDbg, without using the DbgEng API, to display the symbol server paths (i.e. PdbSig70 and PdbAge) for all loaded modules?

I know that

lml

does this for the modules whose symbols have loaded. I would like to know these paths for the symbols that did not load so as to diagnose the problem. Anyone know if this is possible without having to utilize the DbgEng API?

edited:

I also realize that you can use

!sym noisy

to get error messages about symbols loading. While this does have helpful output it is interleaved with other output that I want and is not simple and clear like 'lml'

3条回答
我想做一个坏孩纸
2楼-- · 2019-07-21 01:45

!sym noisy and !sym quiet can turn on additional output for symbol loading, i.e.:

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

When the debugger attempts to load the PDB you will see every path that it tries to load and if PDB's weren't found or were rejected.

查看更多
够拽才男人
3楼-- · 2019-07-21 01:48

You can use the command

lme

to show the modules that did not have any symbols loaded.

查看更多
淡お忘
4楼-- · 2019-07-21 01:58

To my knowledge there's no ready solution in windbg. Your options would be to either write a nifty script or an extension dependent on where you're the fittest.

It is pretty doable within windbg as a script. The information you're after is described in the PE debug directory.

Here's a link to the c++ sample code that goes into detail on extracting useful information (like the name of the symbol file in your case). Adapting it to windbg script should be no sweat.

Here's another useful pointer with tons of information on automating windbg. In particular, it talks about ways of passing arguments to windbg scripts (which is useful in your case as well, to have a common debug info extraction code which you can invoke from within the loaded modules iteration loop).

查看更多
登录 后发表回答