应用程序冻结退出 - 如何调试?

Veg*_*gar 1 delphi freeze

我们有一个由主机(exe)和许多包含gui等的模块(dll)组成的应用程序.有时,应用程序会在关闭时冻结.大多数情况下,它通过TestComplete进行测试.我们无法在调试期间重现该行为.

我们怎样才能找出应用冻结的原因?

我猜它与线程有关,但我不确定.

我们应该尝试任何工具或技术吗?

Mic*_*las 9

我认为好的旧伐木会对你有所帮助.向每个单元添加一些日志记录finalization,将此类日志记录添加到全局数据的析构函数(数据库连接,全局配置等).当然不要破坏记录器对象.

如果您的应用程序是多线程的,那么将一些日志记录添加到工作线程,例如编写'[date] thread [class of class] working'并每隔几秒写一次(您可以使用一些调试模式).还在线程发现它应该终止时添加日志记录.

还可以使用一些系统实用程序,例如ProcessMonitor,Handles,Process Explorer(全部由Sysinternals/Microsoft提供).监视磁盘读/写,处理计数,内存使用情况,网络连接.也许您的应用程序在退出时将一些大型结构转储到磁盘上?也许它分配了大量内存并且必须释放它?


Chr*_*ton 5

使用EurekaLogMadExcept安装它,这可能会显示异常的位置,或导致异常的内存泄漏的位置.这两个都是具有全功能试用版的优秀工具.试试吧,买吧.好东西.