如何使用Windbg(C ++)跳过硬编码断点?

时间:2013-06-07 13:47:00

标签: c++ visual-c++ windbg

我在this question遇到同样的问题,但没有任何响应:(
我正在调试一个崩溃的程序(c ++),它是谁放下了崩溃行代码(_invalide_parameter)
当我在Windbg中录制: .exr -1 以显示导致崩溃的最后一个事件(只有一个事件)时,它会显示我

00000000`006bfbd8 00000000`775d7ef8 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!DbgBreakPoint  

我不关心这一点,我希望能告诉我一行: kernel32UnhandledExceptionFilter 。是的,这条线存在,我可以通过〜* kv 命令来显示它 有一种方法可以跳过硬编码断点 ntdll!DbgBreakPoint ,因为命令 bl bc * bd * 做任何事吗?

谢谢你。

如果需要:Win7 x64,VS2008,C ++,Windbg 64byts,符号未加载,只是默认符号(这里是另一个历史)

1 个答案:

答案 0 :(得分:0)

您必须修改内存中的代码,因为它位于断点所在的代码中。

  1. 首先,在调用DbgBreakPoint()的堆栈跟踪中找到该函数。 (确保在正确的模块中找到正确的功能)。
  2. 在内存中编辑代码以避免调用(例如,用push替换callnop命令。您可以使用 a 命令执行此操作。