给定崩溃偏移量,.PDB和源代码,如何找到源代码行?

Aid*_*yan 17 windows debugging

我有一个Windows事件日志条目,给出了触发应用程序崩溃的失败调用的偏移量.我有一个发布版本,相应的.PDB文件和源代码.

我没有.MAP或.COD文件.

如何找到失败的源代码行?

Ana*_*tts 18

WinDbg有一个ln命令可以为您提供最近的地址符号.

打开二进制文件:

WinDbg -z somebin.dll
Run Code Online (Sandbox Code Playgroud)

在命令窗口中,键入:

ln <address>
Run Code Online (Sandbox Code Playgroud)

找到它所在的功能后,运行

uf somebin!SomeFunc
Run Code Online (Sandbox Code Playgroud)

找到距离地址最近的一条线.

  • 根据http://www.codeproject.com/KB/debug/windbg_part1.aspx?display=Print,"ln adr":将显示最靠近该位置的符号. (3认同)
  • 请注意,地址是WinDbg中模块的基础加上崩溃位置的偏移量.DLL启动时的ModLoad列出了teh模块的基址和结束地址(在我的例子中为0x10000000到0x10149000).您还可以使用"lmDv"列出已加载的模块. (2认同)