显示没有方法名称的callstack

时间:2015-02-11 10:20:28

标签: windbg callstack

在WinDbg中,我可以使用k命令获取callstack。对于没有符号的DLL,它会显示不正确的方法名称和大偏移量,例如

0018f9f0 77641148 syncSourceDll_x86!CreateTimerSyncBridge+0xc76a

由于我没有符号,因此我必须将此信息提供给DLL的开发人员。我不知道谁会处理这个bug以及他有多少调试知识。我想避免开发人员认为问题出在CreateTimerSyncBridge()方法中。

有没有方法可以获取没有方法名称的callstack,只有偏移?

目前我使用以下解决方法:

0:000> ? syncSourceDll_x86!CreateTimerSyncBridge+0xc76a
Evaluate expression: 1834469050 = 6d57c6ba
0:000> ? syncSourceDll_x86
Evaluate expression: 1834287104 = 6d550000
0:000> ? 6d57c6ba-6d550000
Evaluate expression: 181946 = 0002c6ba

所以我可以手动修改callstack到

0018f9f0 77641148 syncSourceDll_x86!+0x2c6ba

但是很多线程中的很多帧都很难做到。

1 个答案:

答案 0 :(得分:3)

您可以使用更严格的评估指定符号必须完全匹配,方法是使用命令行参数-ses启动windbg或发出命令:

.symopt +0x400

调试器的默认值为false,如果您想重置它,则只需删除选项:

.symopt -0x400

请参阅msdn文档:https://msdn.microsoft.com/en-us/library/windows/hardware/ff558827(v=vs.85).aspx#symopt_exact_symbols