Delphi: 在现场记录应用程序错误

7
使用Delphi 7,我想知道是否有一个免费的组件能够在我的应用程序在远程站点运行时收集诊断信息,并帮助我调试错误报告。
也许它记录每个菜单项选择、控件点击、文本输入等?也许它只在崩溃时转储堆栈。也许它做别的事情...
我不介意添加代码(例如,在每个过程的开头和结尾),因为那可能会生成比完全自动化系统更有用的信息。
我不确定解决方案是否应该“打电话回家”,或者仅产生一个可通过电子邮件发送给我的文本文件就足够了。
有什么建议吗?

1
相似问题:http://stackoverflow.com/questions/84798/whats-the-best-logging-package-for-delphi - mjn
你说你“不介意在每个过程的开头添加代码”...实际上,你应该介意这样做,因为这正是导致难以维护代码的原因。 - Disillusioned
5个回答

12

使用MadExcept进行崩溃调试
http://www.madshi.net/madExceptDescription.htm

madExcept旨在帮助您定位软件中的崩溃。每当程序出现异常时,madExcept会自动捕获、分析并收集大量有用信息,并让最终用户有可能向您发送完整的错误报告。

非商业用途免费,商业用途价格便宜。

或者使用来自JEDI代码库的JclDebug

http://www.delphi-jedi.org/

这里可以找到关于它的博客文章 http://www.gnegg.ch/2002/12/jcldebug/

编辑:这似乎是如何使用JCLDebug的一个非常好的示例 http://robstechcorner.blogspot.com/2009/04/finding-hard-to-reproduce-errors.html


8
我使用EurekaLog http://www.eurekalog.com
它可以获取调用堆栈、内存内容、其他正在运行的应用程序、机器的详细信息、操作系统、修补程序等等,如果用户允许并配置相应设置,它还可以截取屏幕截图,询问用户输入(在崩溃时你在做什么?)等等。它可以通过电子邮件发送转储文件,通过http上传,直接发布到像Mantis和FogBugz这样的错误跟踪器,或者只保留在系统上。它很棒,也得到了良好的支持。
此外,这里还有一个类似问题的链接Compare Delphi Exception Handlers

谢谢,听起来很不错(特别是那个链接)+1 - Mawg says reinstate Monica
+1 for EurekaLog!当我不知道从哪里开始修复错误时,它帮助我在几分钟内解决了问题。 - stg

4

你看过开源的JclDebug吗?这是Project Jedi上一个关于JclDebug的简明写作

想象一下,你可以获得一个详细的错误报告,其中包含完整的调用堆栈以及有关文件和行号的信息。该报告可以直接在用户计算机上生成,并通过电子邮件或直接通过互联网使用自定义程序发送给您-甚至可以直接创建您正在使用的bug追踪工具中的条目。

JEDI项目使这成为可能-更准确地说,是其JCL-子项目和其JclDebug框架。安装完软件包后,将在Delphi-IDE的项目菜单中添加一个名为“插入JCL Debug数据”的新菜单选项。


2

有一个很好的Delphi版本的开源日志框架,它是用Java编写的最著名的开源日志框架Log4J的移植版:它被称为Log4Delphi。

http://log4delphi.sourceforge.net

我下载了它,并成功地将其扩展和用于我的项目。

最佳特点:开源、Apache许可证、非常好的文档、简单扩展、强大的设计:使用appender的概念,您可以构建自定义appender,并使用UDP协议将日志数据从远程客户机发送到总部

试试吧,然后告诉我 :-)。

PS:该项目似乎已经停止更新,但它已经成熟,我使用它时没有出现内存超载和CPU负载问题。


这听起来很棒,谢谢 (+1)。你的扩展只对你有用,还是可以发布给大家使用的? - Mawg says reinstate Monica
我的扩展程序是根据我们的业务数据结构建模的,但我还添加了一个基于indy制作的带有加密功能的UDP appender,用于通过互联网发送敏感的日志数据。如果您对源代码更感兴趣,请告诉我。 - morde
另一个端口被称为log4d,可在Sourceforge上获得,网址为http://sourceforge.net/projects/log4d/,似乎正在积极开发中。 - mjn

2

log4Delphi项目已经休眠了4年,但我已被授权更新这个休眠的Log4Delphi项目,并将过去4年中的错误修复和补丁整合到最新的0.8版本中,该版本可在Source-forge上下载。我在生产中使用这个库,发现它非常稳定、可靠且易于使用。

Log4Delphi下载页面


它看起来不是很活跃。你会推荐在2017年使用它吗? - Mawg says reinstate Monica
1
@Mawg,我会说Delphi社区中并不像以前那样活跃,但是我仍然会推荐它。 - Melloware

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