Display callstack without method names

爷,独闯天下 提交于 2019-12-11 06:56:11

问题


In WinDbg, I can get the callstack using the k command. For DLLs without symbols, it displays an incorrect method name and a large offset, e.g.

0018f9f0 77641148 syncSourceDll_x86!CreateTimerSyncBridge+0xc76a

Since I don't have symbols, I have to give this information to the developer of the DLL. I don't know who will work on the bug and how much debugging knowledge he has. I want to avoid that the developer thinks the problem is in the CreateTimerSyncBridge() method.

Is there a way to get the callstack without method names, just with offsets?

At the moment I'm using the following workaround:

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

So I can modify the callstack manually to

0018f9f0 77641148 syncSourceDll_x86!+0x2c6ba

But that's really hard to do for a lot of frames in a lot of threads.


回答1:


You can specify that the symbols must match exactly using a stricter evaluation, either by starting windbg with command line parameter -ses or issuing the command:

.symopt +0x400

The default is false for the debugger, if you wish to reset this then just remove the option:

.symopt -0x400

See the msdn docs: https://msdn.microsoft.com/en-us/library/windows/hardware/ff558827(v=vs.85).aspx#symopt_exact_symbols



来源:https://stackoverflow.com/questions/28451803/display-callstack-without-method-names

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!