7

我有一个多层软件,它是两个应用程序(GUI,DataSnap Server)。我的 DataSnap 服务器应用程序有一个错误导致有时会发生 EAccessViolation。这样的:

Exception EAccessViolation  in module unidac160.bpl at 00010CB1.
Access Violation at 002B77832 in module unidac160.bpl. Read of  address 0000000C

我想获得完整的调用堆栈并将其记录在文件中。我也使用 eurekalog 但它仅对 gui 应用程序有效。

4

4 回答 4

9

EurekaLog 对所有应用程序都非常有效。只需对其进行配置,以便它将异常记录到文件中并且根本不显示异常对话框。

于 2012-05-03T06:19:32.253 回答
7

我们的开源日志记录类有一个带有完整调用堆栈的异常拦截器,包括源代码行。

调试信息被高度压缩(比 zip 或任何其他格式更好),可以选择进入 exe。

开源,适用于 Delphi 5 到 XE2。

在其最新版本中(使用源代码存储库中的版本- 即当前 1.16),它还能够在库中记录异常(即在 .dll 或 .bpl 中),正如您的请求明确指出的那样。

还有其他功能,例如客户端分析,可以帮助您的客户支持和应用程序增强,来自真实数据(不仅在测试台中)。

于 2012-05-03T16:17:33.937 回答
4

您还可以使用MadExcept为您的应用程序获取堆栈。Here you have a similar question madExcept, getting top of current stack

此外,与您的问题相关,这也可以帮助您

在 Delphi Win32 应用程序中显示调用堆栈

于 2012-05-03T08:01:07.900 回答
0

我之前一直在使用MemCheck来呈现调用堆栈,但我不确定它是否仍然适用于最新的 Delphi 版本。

于 2012-05-03T12:14:47.263 回答