如何在代码中模拟Delphi断点?

Jim*_*eth 25 ide delphi debugging breakpoints

我很确定我以前见过这个,但我还没有发现/记得怎么做.我希望有一行代码,当从Delphi调试器执行时,我希望调试器弹出,就像该行上有一个断点.

就像是:

FooBar := Foo(Bar);
SimulateBreakPoint; // Cause break point to occur in Delphi IDE if attached
WriteLn('Value: ' + FooBar);
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的.我知道我可以使用异常,但这会比我想要的开销更多.这是一些演示代码.

提前致谢!

Joe*_*hts 37

从代码触发调试器(据说,我没有方便的delphi副本尝试):

asm int 3 end;
Run Code Online (Sandbox Code Playgroud)

看这个页面:

http://17slon.com/blogs/gabr/2008/03/debugging-with-lazy-breakpoints.html

  • 或者,正如我所建议的那样:如果DebugHook <> 0则asm int 3结束; (3认同)
  • 我通常会做"if(DebugHook <> 0)和(**Break Condition**)然后asm int 3 end;" 所以我要添加一个条件来打破,并在某些条件下将此代码放在错误/错误之前. (2认同)

gab*_*abr 14

正如Andreas Hausladen在对该artice的评论中所说的那样,Win32 API DebugBreak()函数的DOS-ish较少,同样效果也很好.

  • DebugBreak()将断点放在反汇编/ CPU窗口中.我宁愿在我的代码中使用它. (11认同)