2015-02-11 51 views
1

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

0018f9f0 77641148 syncSourceDll_x86!CreateTimerSyncBridge+0xc76a 

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

有没有办法获得没有方法名称的调用堆栈,只有偏移量?

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

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 

所以我可以手动修改调用堆栈,以

0018f9f0 77641148 syncSourceDll_x86!+0x2c6ba 

但是,这真的很难,在很多帧做很多线程。

+0

您可以将符号选项设置得非常严格,以免产生不正确的符号匹配'.symopt + 0x400'请参阅:https://msdn.microsoft.com/en-us/library/windows /hardware/ff558827(v=vs.85).aspx#symopt_exact_symbols – EdChum 2015-02-11 10:24:41

回答