WinDbg - 调试混合x64托管/非托管代码

时间:2009-12-21 20:32:13

标签: visual-studio debugging unmanaged windbg managed-code

我正在使用WinDbg(Native x64 - NOT Itanium)来调试加载托管非托管DLL的x64(非托管)应用程序。

我正在尝试在其中一个非托管DLL中设置断点。当断点被击中并且我单步执行时,显示的指令与它们应该完全不同。我用两个不同的反汇编程序验证了WinDbg在我单步执行时没有显示正确的反汇编。

当附加到应用程序时,我得到这样一行:

ModLoad: 00000000`XXXXXXXX 00000000`YYYYYYYY  C:\MyDLL.DLL

我调整了两个反汇编程序中的地址以反映基地址XXXXXXXX。

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

uf modname!FuncName是否返回正确的结果?如果你在奇怪的地方拆卸/断点,你有时可以欺骗WinDbg。请记住,x86 / x64是一个可变宽度的指令集,所以如果你开始读取指令的中途,反汇编程序会感到困惑。

答案 1 :(得分:0)

某处我注意到这可能与您的DLL中的不正确入口点有关。但我不知道如何处理这些信息(我是初学者)。