我使用Visual Studio,开发本地应用程序,我有我的代码的程序化断点(断言)使用__asm INT 3或__debugbreak放置。 有时,当我打它,我想禁用它,这样在相同的调试会话连续击打不再中断调试程序。 我怎样才能做到这一点?
Answer 1:
在x86 / x64
假设你正在写的x86 / x64的应用,下面写在你的观察窗口:
86: *(char *)eip,x
64: *(char *)rip,x
你应该看到一个值的0xCC,这是操作码INT 3.更换的0x90它,这是NOP操作码。 您还可以使用存储器窗口与EIP为一个地址。
PPC
假设你正在编写PPC应用程序(例如Xbox 360的),下面写在你的观察窗口:
*(int *)iar,x
你应该看到一个值0xfeNNNNNN,这是操作码陷阱(最常见的0x0fe00016 =无条件陷阱)。 与0x60000000替换它,这是NOP操作码。
Answer 2:
你可以尝试这样的事:
#define ASSERT(x) {\
if (!(x)) \
{ \
static bool ignore = false; \
if (!ignore) \
{ \
ignore = true; \
__asm int 3 \
} \
}\
}
这应该打调试一次。 你甚至可能会显示一个消息框给用户,并要求做什么:继续(没有任何反应),中断(INT 3叫法)或忽视(忽略设置为true,断点不会再命中)
文章来源: How to disable a programmatical breakpoint / assert?