2008-10-02 21 views
25

我很确定我以前见过这个,但我还没有发现/记住如何去做。我想要一行代码,当它从Delphi调试器执行时,我想让调试器弹出来,就像那条线上有一个断点。如何模拟代码中的Delphi断点?

喜欢的东西:

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

希望这是有道理的。我知道我可以使用一个异常,但如果我想要的话,那将会花费更多的开销。这是一些演示代码。

在此先感谢!

回答

37

触发从代码调试器(据说,我没有得心应手德尔福的副本尝试):

asm int 3 end; 

看到这个页面:

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

+0

就是这样。工作很棒!谢谢!现在我需要找到一种方法来提升中断点的调用堆栈。 。 。 。 – 2008-10-02 05:36:20

+0

请注意捕捉EExternal,否则在调试器外部运行时会出现外部异常。 – 2008-10-02 06:40:17

13

由于安德烈亚斯Hausladen在对artice的评论中指出,Win32 API DebugBreak()函数不如DOS-ish,并且工作得很好。