【发布时间】:2009-12-21 20:32:13
【问题描述】:
我正在使用 WinDbg(Native x64 -- NOT Itanium)来调试一个 x64(非托管)应用程序,该应用程序同时加载了托管和非托管 DLL。
我正在尝试在其中一个非托管 DLL 中设置断点。当断点被击中并且我单步执行时,显示的指令与它们应有的完全不同。我用两个不同的反汇编程序验证了 WinDbg 在我逐步执行时没有显示正确的反汇编。
当附加到应用程序时,我得到这样的一行:
ModLoad: 00000000`XXXXXXXX 00000000`YYYYYYYY C:\MyDLL.DLL
我调整了两个反汇编器中的地址,以反映基地址 XXXXXXXX。
可能是什么问题?
【问题讨论】:
-
我发现了这个(从来没有完全回答过):stackoverflow.com/questions/1398826/… 也许这有帮助?
-
反汇编一般有意义吗?我会普遍偏爱windbg,因为它在实时过程中使用有效的IP进行解码,这有利于而不是仅仅依赖静态分析(无论反汇编程序有多好)。你能透露一些汇编代码来比较吗?
-
这是“调用 someFunc”与“mov ebx,esp”。即使踩到其他点也不匹配。击中断点似乎不一致;我设置了应该被命中但没有被命中的断点。
标签: visual-studio debugging unmanaged windbg managed-code