delphi - 应用程序在退出时卡住 - 如何调试?

标签 delphi freeze

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

我们如何找出应用程序卡住的原因?

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

有什么我们应该尝试的工具或技术吗?

最佳答案

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

如果您的应用程序是多线程的,则将一些日志记录添加到工作线程,例如写入“[日期]线程[类名]工作”并每隔几秒写入一次(您可以使用一些 Debug模式)。当线程发现它应该终止时,还要添加日志记录。

还可以使用一些系统实用程序,例如 ProcessMonitor、Handles、Process Explorer(全部由 Sysinternals/Microsoft 提供)。监控磁盘读取/写入、句柄计数、内存使用情况、网络连接。也许您的应用程序在退出时会在磁盘上转储一些大结构?也许它分配了很多内存并且必须释放它?

关于delphi - 应用程序在退出时卡住 - 如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122685/

相关文章:

c# - 如何在任务内关闭 WPF 窗口

delphi - Delphi中的静态属性

Delphi 通过引用或值/复制传递参数

delphi - 嵌套类中的成员无法访问 - 为什么?

java - Eclipse Luna 在 Java 调试中挂起

Delphi TPrinters.GetPrinters 调用挂起

c# - 如何卡住所有可卡住的 WPF 对象?

c++ - 我将类型库 ( .tlb ) 导入到 Delphi 中,但函数参数似乎不正确。我该如何解决?

用于TCP连接的Delphi透明代理

java - Slick2D 即使图像存在也不会加载图像