我已经在delphi中维护了一个我没有线索的项目:)。它从D5转换为XE8。所以它有很多自定义的东西(我用Dictionaries替换了一些自定义的Object列表,因为D5中不存在Dictionaries)。主要应用是扩展TForm,而在FormCreate方法中包含这一行
Application.OnException := FormException;
HandleException := Application.HandleException;
FormException
方法接受异常,并打印一个包含一些信息和调用堆栈的详细窗口。
我想在我的项目中集成EurekaLog或madExcept,以便能够找到有关未处理异常的更多信息。但是虽然安装和启用我没有得到我想要的信息的窗口。它运行FromException方法,虽然我读到与madExcept链接时会被忽略。创建一个新项目只需通过madExcept或EurekaLog激活的按钮单击抛出异常就可以正常工作。我不知道在哪里寻找delphi的异常处理,以及我是否需要为第三方工具提供更多设置。有什么想法吗?
答案 0 :(得分:0)
我使用的是EurekaLog,并且有几种情况它没有捕获异常。
例如,如果您的应用程序是多线程的并且它正在关闭,则线程正在关闭,并且EL可能没有时间捕获异常。
您可能还配置了EL以忽略特定异常。检查EL设置窗口中的选项。
确保根据您拥有的应用类型(VCL / FMX /等)配置EL。这是EL选项窗口中的第一个选项。
确保调试器生成详细的地图文件(项目>选项>编译器>链接>地图文件 - >详细信息)
我能想到的最后一件事是没有正确安装EL。转到项目>查看来源。如果EL为您的项目激活,您应该能够在System.StartUpCopy之前看到许多单位(EMemLeak等)。
顺便说一句,你有哪个版本的EL?Elpizo na boithisa ......
答案 1 :(得分:0)
EurekaLog看到您已经安装了Application.OnException
事件处理程序,并假定您想自己处理未处理的异常。 madExcept可能也是如此。
如果要使用EurekaLog处理未处理的异常,则可以:
HandleException
from EBase
unit从您的FormException
明确调用EurekaLog Application.OnException
移至EurekaLog's OnExceptionNotify。有关更多详细信息,请参见this。