Delphi - 如何重新启用调试器异常通知?

23

我用 D2009 打开了一个在 D2007/08 中创建的项目,它能够编译但在执行时会抛出大量异常。虽然这很奇怪,但我知道这个项目一团糟,所以我想继续修复它。实际上,并不是修复全部,只要让它能够工作就足够了。

当我运行它时,我得到了一些调试器异常通知(含有中断、继续、帮助按钮的小消息对话框),我想继续并查看是否跳过异常可能会使其工作。我在左下角勾选了"忽略此异常类型"复选框,然后点击了“继续”按钮。现在我不再收到异常通知,但应用程序仍无法运行。我只看到几个模糊的错误框,并且几乎不知道发生了什么。

我想重新启用之前选择忽略的异常类型。但我找不到这个选项的位置。我应该去哪里寻找?有人能帮忙吗?


1
感谢这个问题(以及对它的回答)。最终,我的调试器按预期工作了。 - sum1stolemyname
2个回答

23

我已经在

(主菜单) 工具 >> 选项 >> 调试器选项 >> CodeGear调试器 >> 语言异常 >> 中找到了被忽略的异常类型列表。

它比D2005更隐蔽,但非常接近@stuartd引用文章中所说的内容。


根据您在这里引用的顺序,唯一的区别是"Borland Debuggers"变成了"Codegear Debuggers"。 - Rob Kennedy
嗯,是的。问题在于,我一开始在错误的选项屏幕中寻找它。我以为它在Ctrl+Shift+F11选项中,而实际上它在Tools>>Options屏幕中。过去三年左右我很少在Delphi中进行开发,并且习惯了Eclipse和如何过滤选项。现在我们在SO上有一个Q&A,这就是这个网站的真正意义。我希望将来这将帮助一些遇到这个问题的人。 - Peter Perháč

20
以下内容摘自Rob Kennedy在Delphi Q&A的此页面(CC许可),虽然与Delphi 2005有关,但可能会有所帮助。

为什么我即使编写了异常处理程序仍然会收到错误消息?

在默认设置下,Delphi IDE会在程序中出现异常时通知您,如图1所示。重要的是要意识到,在此时,您的程序的任何异常处理代码都尚未运行。这都是Delphi本身;作为调试器的特殊状态使其能够首先获得程序中任何异常的通知,甚至在程序知道异常之前。

enter image description here

避免通知

如果您不想在异常发生时收到通知,您有几个选择。

  • 您可以使用Delphi的“高级断点”来禁用代码区域周围的异常处理。首先,在要忽略异常的代码行上设置断点。右键单击窗口边栏中的断点圆点并打开断点属性对话框。在高级部分中有一些复选框(请参见图2)。清除“Break”框以防止调试器在该行中中断程序,并设置“Ignore subsequent exceptions”框。

    之后,在您希望调试器恢复处理异常的位置设置另一个断点。更改其属性以处理随后的异常。

enter image description here

  • 您可以告诉调试器忽略某些类型的异常。图3显示了Delphi的语言异常选项。将异常类添加到列表中,该类型和任何子类的所有异常都将通过到达您的程序,而不会被Delphi干扰。

enter image description here

  • 在与之前选项相关的选项中,您可以告诉调试器不要在任何异常上中断。为此,请清除“通知语言异常”复选框。

  • 最后,您可以完全关闭集成调试。Delphi将不会通知您异常,也不会在断点处停止或允许使用“暂停”按钮。在调试器选项中关闭集成调试,如图5所示,适用于Delphi 2005。

enter image description here


我看了一下,虽然它给了一些希望,但2009版本已经改变了很多,选项不再存在(如2005年的快照所示)。 - Peter Perháč
我看错了不同的选项窗口,糟糕。感谢您指向那篇文章。 - Peter Perháč
2
帮我在Delphi 10.1中找到了它。6年过去了,仍然有效。谢谢。 - Frédéric Hebrard
这些变体都没有达到我想要的。 - Paul
有助于开发64位maXbox5,谢谢。 - undefined

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