用于调试远程计算机上的问题的技术和工具?

Sha*_*ews 12 delphi debugging

用户一直在报告我无法在我的机器上重现的问题/崩溃/错误.我发现这些问题很难解决.

我已经开始使用EurekaLog(太棒了!)和SmartInspect.这两种工具都有很大帮助,但我仍然发现很难发现一些问题.

我刚刚购买了David Agans的Debugging(等待它到达).

是否还有其他特定于Delphi的工具或技术有助于捕捉这些难以找到的远程问题?我发现难以追查的问题是那些不会引起例外或有明确原因的问题.EurekaLog捕获异常,一旦我有理论检查,SmartInspect就相当不错了.但在某些情况下,这是一个看似随机的崩溃,有几千行代码可能有问题.如何缩小根本原因?

War*_* P 12

MadExcept是我使用的,它很棒.我还使用了EurekaLog,发现功能几乎完全相同,只是我有更多的经验和时间使用MadExcept.它是免费的非商业用途,价格合理,适合商业用途. 更新: MadExcept 4现已推出,甚至支持64位Delphi XE2应用程序,并且还有内存泄漏检查.

什么都没有爆炸,我依赖大量使用跟踪记录.我有一个TraceMessage(整数,字符串)函数,我在所有应用程序中调用,当有人遇到问题时,我让他们单击一个菜单项,将调试跟踪级别调到最详细的级别; 它为我提供了我的应用程序所做的所有事情的完整历史记录,这帮助我解决了客户网站上的问题.客户遇到崩溃,由madexcept发送的崩溃报告包含一个自动附加的日志文件(由我的应用程序创建).我相信你可以用madExcept和EurekaLog同样做得很好.如果您需要一个日志系统,您可以下载Log4D,或者您可以自己编写,这很简单.

对于永远免费的,尝试JclDebug,这需要更多的工作来设置,但也为我工作非常好.

有关堆问题的帮助,请了解有关fastMM(完整版)调试选项的更多信息.

你不应该忘记Delphi本身支持远程调试,如果你可以在办公室没有安装delphi的机器上重现崩溃,在办公室网络上使用远程调试,而不是在另一个上安装完整的RAD Studio安装机器在你的工作.你也可以使用远程调试连接到互联网上的客户端PC计算机,但我还没有尝试过互联网远程调试,所以我不能说它是否在互联网上运行良好.我知道,因为远程调试不支持自动部署你构建的EXE文件(你必须自己做这部分),通过互联网进行远程调试,到客户端PC是更多的工作.

您可能还会通过修复所有提示和警告,然后使用Peganza的CodeHealer或Pascal Analyzer(PAL)来查找许多问题.这些静态分析工具可以帮助您找到真正的代码问题.

如果性能和内存使用是您的问题,请获取完整版AQTime,并使用它来分析和观察您的系统运行.它将帮助您修复内存泄漏,并了解应用程序的运行时行为和内存使用情况,而不仅仅是泄漏,而是内存和CPU使用的瓶颈.其中一些瓶颈也可能是一些奇怪问题的根源.我甚至使用AQTime来帮助我找到死锁,因为它可以生成执行痕迹,可以帮助我找出正在运行的代码,并找到死锁. 更新: AQTime不能安装在主开发机器以外的机器上,不会违反新修改的AQTime许可条款.在过去的好时光里,这些条款从来都不是限制性的.

如果你更准确地了解你的问题是什么,我相信其他人可以给你更多具体的想法,但所有这些都是很好的一般技术.

  • 如果您将AQTime许可证安装在不属于您的机器上,则可能违反AQTime许可证. (2认同)

小智 7

最好的方法之一是使用Delphi附带的远程调试器,因此您可以直接调试远程计算机上运行的应用程序.远程调试器在某些Delphi版本中有些错误,并且需要仔细按照说明进行操作,但是在需要时它是一个需要考虑的工具.还要检查您的版本是否有可用的更新,它们可以单独安装在"远程"系统上进行部署.否则,首先安装远程调试器,然后检查安装的文件是否在本地安装中具有较新版本,以及远程计算机上是否具有copy tehm.


Uwe*_*abe 6

在这些情况下,CodeSite对我帮助很大.自XE以来它与Delphi捆绑在一起.

  • 或任何其他记录器 (3认同)