1

我已经在delphi中维护了一个我不知道的项目:)。它从 D5 转换为 XE8。所以它有很多自定义的东西(我用字典替换了一些自定义对象列表,因为 D5 中不存在字典)。主应用程序正在扩展 TForm 并且在 FormCreate 方法中包含这一行

Application.OnException := FormException;
HandleException := Application.HandleException;

FormException方法接受异常并打印带有一些信息和调用堆栈的详细窗口。

我想在我的项目中集成 EurekaLog 或 madExcept,以便能够找到有关未处理异常的更多信息。但是,尽管安装并启用了我没有得到我想要的信息的窗口。它运行 FromException 方法,尽管我读到当与 madExcept 链接时,它会被忽略。创建一个新项目只需在 madExcept 或 EurekaLog 激活的情况下单击按钮引发异常即可正常工作。我不知道在哪里寻找delphi的异常处理,以及是否需要对3rd 方工具进行更多设置。有任何想法吗?

4

2 回答 2

0

我使用 EurekaLog 并且在某些情况下它没有捕获异常。

例如,如果您的应用程序是多线程的并且正在关闭,则线程正在关闭,并且 EL 可能没有时间捕获异常。

您也可能已将 EL 配置为忽略特定异常。检查 EL 设置窗口中的选项。

确保为您拥有的应用程序类型(VCL/FMX/等)配置了 EL。这是 EL 选项窗口中的第一个选项。

确保调试器生成详细的映​​射文件(项目>选项>编译器>链接>映射文件->详细)

我能想到的最后一件事是 EL 没有正确安装。转到项目>查看源代码。如果为您的项目激活了 EL,您应该能够在 System.StartUpCopy 之前看到一些单元(EMemLeak 等....)。

顺便说一句,你有哪个版本的 EL?

...

于 2016-03-11T15:06:57.927 回答
0

EurekaLog 看到你已经安装了Application.OnException事件处理程序,并假设你想自己处理未处理的异常。madExcept 可能也是如此。

如果你想使用 EurekaLog 处理未处理的异常,你可以:

有关更多详细信息,请参阅内容。

于 2019-06-11T12:32:53.013 回答