【问题标题】:Delphi: How to debug run until you get back to your source file?Delphi:如何调试运行直到你回到你的源文件?
【发布时间】:2009-04-20 10:37:10
【问题描述】:

如果我运行程序并引发异常,系统会询问我是要继续还是中断。

如果我选择中断,我可以看到异常来自哪里,但如果中断在库或系统文件中而不是我的源文件之一(假设异常在 System.pasControls.pas)我需要使用 F8 手动将执行向前推进,直到它返回到我的一个文件,这样我就可以看到我的代码的哪一部分导致了异常。

这可能需要很长时间。

我知道我应该在我的代码中捕获较低级别的异常,但在这种情况下它并没有遇到我的异常处理程序之一。

有没有办法说

  • 继续执行,直到到达文件 X 或
  • 直到您回到项目特定文件。

出于对其他编译器/IDE如何处理这个问题的普遍好奇,我也很感兴趣。

抱歉,如果我没有尽可能清楚地说明这一点。

【问题讨论】:

    标签: delphi delphi-2007


    【解决方案1】:

    您可以使用 堆栈视图 窗口解决此问题。

    1. 打开堆栈视图窗口 (CTRL+ALT+S)。
    2. 在堆栈视图中双击要插入断点的方法。
    3. 包含调用方方法的单元打开,光标位于调用方方法上。
    4. 设置断点。

    【讨论】:

      【解决方案2】:

      有一个比 Lieven 的建议更简单的方法。按照他布置的前 3 个步骤进行操作,但不要放置断点。

      放置断点的问题是您必须在之后清除它,否则每次通过该行时您最终都会被放入调试器中。如果只想运行到某一行然后放到调试器once,请将光标放在该行(插入点,而不是鼠标光标)并按F4 (运行到光标处)。这就像一个一次性断点。

      【讨论】:

      • @Mason,问题是 OP 不知道哪行代码触发了异常。这使得使用 F4 不是一个可行的解决方案。
      • 我不太明白。 OP 找不到要按 F4 的行,但他们可以找到要设置断点的行?
      • 他没有找到要设置断点的行。启用了 Delphi 的“异常中断”。停在“a”线的是德尔福。 OP的问题是Delphi停在一个系统单元io一个“用户”单元中。
      • 我明白这一点。我的意思是,基本上,按照你的步骤,但不是在第 4 步设置断点,而是按 F4。编辑帖子以澄清这一点。
      • +1 @Mason,抱歉我看错了。你是对的。使用 F4 作为 step 4 io 设置断点确实更简单。
      【解决方案3】:

      有几种方法:

      1. 使用“下一个源代码行”功能(Shift+F7)
      2. 使用调用堆栈并双击您需要的函数,在此处添加断点并点击“运行”(F9)。
      3. 使用“退出”(Shift+F8) 功能,直到您回到自己的代码中。

      【讨论】:

      • 我有德文版的 Delphi,所以我不太确定 Shift+F7 的菜单标题...
      • 我认为F5是在代码中设置断点,F9是在Delphi中运行。你用的是哪个版本的 Delphi?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2015-03-24
      • 2010-09-23
      • 1970-01-01
      • 2017-03-04
      • 2010-09-20
      相关资源
      最近更新 更多