我有一个多层软件,它是两个应用程序(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应用程序。
答案 0 :(得分:9)
EurekaLog对所有应用程序都非常有效。只需对其进行配置,以便将异常记录到文件中,并且根本不显示异常对话框。
答案 1 :(得分:7)
我们的Open-Source logging classes有一个带有完整调用堆栈的异常拦截器,包括源代码行。
调试信息经过高度压缩(优于zip或任何其他格式),可选择进入exe。
开源,适用于Delphi 5到XE2。
在其最新版本中(使用来自the source code repository的版本 - 即当前为1.16),它还能够记录库中的异常(即在.dll或.bpl中),因为您的请求明确声明。
还有其他功能,例如客户端分析,可以帮助您的客户支持和应用程序增强,来自真实数据(不仅仅是在测试平台中)。
答案 2 :(得分:4)
您还可以使用MadExcept获取应用程序的堆栈。您有类似的问题madExcept, getting top of current stack
此外,与您的问题相关,这也可以帮助您
答案 3 :(得分:0)
我之前一直在使用MemCheck来渲染调用堆栈,但我不确定它是否仍适用于最新的Delphi版本。