找不到Windbg本地符号

时间:2015-02-05 13:45:00

标签: windbg

我已将Windbg设置为我的开发系统的调试器。而且,果然如果我在我的某些程序中引入一个陷阱弹出对话框;我点击调试按钮;并显示源文件,并突出显示错误行。鼠标悬停和本地vars窗口工作。

今天,我编写了一个相当简单的独立C应用程序,犯了一个错误并陷入了陷阱。但这次打击调试没有来源;只是控制台窗口。

如果我在main上设置断点并点击f5,确实会出现源代码,但鼠标悬停变量不起作用,也不会出现局部变量窗口。

程序编译为debug / Zi / Od,.pdb(& .ilk?)就在源和可执行文件旁边。

如果我手动调用windbg下的可执行文件,同样的事情。在运行到其中的断点之前没有源。然后没有本地的var知识。

如果它可以找到一个应用程序的适当信息;为什么不是另一个?

干杯,Buk。

2 个答案:

答案 0 :(得分:0)

Windbg不知道PDB的位置,即使它们与exe在同一个文件夹中也是如此。在File - > Symbol File Path下添加PDB的位置( CTRL + S )。

答案 1 :(得分:0)

调试符号问题

如果符号(PDB)无法按预期工作,请使用

!sym noisy

命令调试问题。这将显示有关WinDbg查找PDB文件的路径的其他信息。

如果您更改符号路径以解决问题(使用.sympath.sympath+.symfix.symfix+),请务必发出.reload之后。

检查符号的正确性

如果更改符号路径仍然没有帮助,可能PDB与可执行文件不匹配(如果您刚刚编译它,则不应该发生)。可以肯定的是,您可以使用WinDbg附带的symchk工具。

Symchk /if <exe> /s <symbol path> /av /od /pf
/if = input is a file
/s  = symbol file path
/od = all details
/av = verify
/pf = check if private symbols are available

或获取ChkMatch更容易使用

ChkMatch -c <exe file> <pdb file>

工作区

(评论中的一个问题)

不要担心工作空间和WinDbg要求保存。没有reading about it,你就无法理解这个概念。