Delphi:如何调试直到返回源文件?

6
如果我运行程序时出现异常,我会被问到是否要继续或中断。
如果我选择中断,我可以看到异常来自哪里,但如果中断在库或系统文件中而不是我的源文件之一(比如异常在 System.pas 或 Controls.pas 中),我需要手动使用 F8 键向前执行,直到返回到我的文件之一,这样我就可以看到哪部分代码导致了异常。
这可能需要很长时间。
我知道我应该在我的代码中捕获低级别的异常,但在这种情况下,它没有触发我的异常处理程序。
有没有办法说
- 运行前进执行,直到你到达文件 X 或 - 直到你回到一个特定于项目的文件。
我也对其他编译器/IDE如何处理此问题感兴趣。
如果我没有表述清楚,还请谅解。
3个回答

12

您可以使用 Stack View 窗口来解决此问题。

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

5

有比Lieven的建议更简单的方法。按照他所列出的前三个步骤,但不要设置断点。

设置断点的问题在于之后必须清除它,否则每次通过那一行时都会进入调试器。如果您只想运行到某一行,然后仅一次跳转到调试器,请将光标放在该行上(插入点,而不是鼠标光标),然后按下F4(运行到光标)。这就像一个一次性的断点。


@Mason,问题在于原帖作者不知道哪一行代码触发了异常。这使得使用F4不是可行的解决方案。 - Lieven Keersmaekers
我不太明白。原帖作者找不到可以按F4的行,但是他们可以找到可以设置断点的行? - Mason Wheeler
他找不到可以设置断点的行。Delphi的“异常中断”已启用。是Delphi在“a”行停止。OP的问题是Delphi停在系统单元io或“用户”单元中。 - Lieven Keersmaekers
我明白了。我的意思是,基本上按照你的步骤操作,但是在第4步不需要设置断点,只需按F4即可。已编辑帖子以澄清此事。 - Mason Wheeler
+1 @Mason,抱歉我读错了。你当然是正确的。使用F4作为第四步io设置断点的确更简单。 - Lieven Keersmaekers

3
有几种方法可以实现:
  1. 使用“下一源代码行”功能(Shift + F7)
  2. 使用调用堆栈,双击您需要的函数,在那里添加断点并点击“运行”(F9)。
  3. 使用“跳出”(Shift + F8)功能,直到回到您自己的代码中。

我有德语版的Delphi,所以我不确定Shift+F7的菜单标题是什么... - Daniel Rikowski
我认为在Delphi中,按F5可以设置代码断点,按F9可以运行程序。你使用的是哪个版本的Delphi? - Yogi Yang 007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接