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

如何在代码中模拟Delphi断点?,delphi,debugging,ide,breakpoints,Delphi,Debugging,Ide,Breakpoints,我很确定我以前见过,但我还没有发现/记得怎么做。我希望有一行代码,当从Delphi调试器执行时,我希望调试器弹出,就像这行上有一个断点一样 比如: FooBar := Foo(Bar); SimulateBreakPoint; // Cause break point to occur in Delphi IDE if attached WriteLn('Value: ' + FooBar); 希望这是有道理的。我知道我可以使用一个异常,但这将比我想要的开销大得多。这是一些演示代码 提前谢谢

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

比如:

FooBar := Foo(Bar);
SimulateBreakPoint; // Cause break point to occur in Delphi IDE if attached
WriteLn('Value: ' + FooBar);
希望这是有道理的。我知道我可以使用一个异常,但这将比我想要的开销大得多。这是一些演示代码


提前谢谢

从代码触发调试器(据推测,我手边没有delphi的副本可供尝试):

见本页:


正如Andreas Hausladden在对那篇文章的评论中所说,Win32 API DebugBreak()函数不太像DOS-ish,而且同样工作良好。

就是这样。工作得很好!谢谢现在我需要找到一种方法来向上移动断点的调用堆栈。注意捕获外部异常,否则在调试器外部运行时会出现外部异常。或者,正如我所建议的:如果DebugHook为0,则asm int 3 end;我通常会执行“if(DebugHook 0)和(Break Condition)then asm int 3 end;”,因此我会添加一个条件来中断,并在某些条件下将此代码放在错误/bug之前。DebugBreak()将中断点放在disassembly/CPU窗口中。我宁愿把它写在我的代码里。
asm int 3 end;