【问题标题】:How to simulate a Delphi breakpoint in code?如何在代码中模拟 Delphi 断点?
【发布时间】:2008-10-02 04:54:24
【问题描述】:

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

类似:

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

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

提前致谢!

【问题讨论】:

    标签: delphi debugging ide breakpoints


    【解决方案1】:

    从代码中触发调试器(据说我手头没有delphi的副本可以尝试):

    asm int 3 end;
    

    查看此页面:

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

    【讨论】:

    • 就是这样。工作得很好!谢谢!现在我需要找到一种方法来向上移动断点的调用堆栈。 . . .
    • 小心捕捉 EExternal 否则在调试器外部运行时会出现外部异常。
    • 或者,正如我建议的那样:如果 DebugHook 0 then asm int 3 end;
    • 我通常会执行“if (DebugHook 0) and (Break Condition) then asm int 3 end;”所以我会添加一个条件来中断,并在某些条件下将此代码放在错误/错误之前。
    【解决方案2】:

    正如 Andreas Hausladen 在 cmets 中对那篇文章所说的那样,Win32 API DebugBreak() 函数不像 DOS 那样运行良好。

    【讨论】:

    • DebugBreak() 将断点放在反汇编/CPU 窗口中。我宁愿在我的代码中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多