delphi – 如何在程序挂起时调试程序?

前端之家收集整理的这篇文章主要介绍了delphi – 如何在程序挂起时调试程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序每秒进行一次测量(我在演示模式下运行它并生成随机数据,因此问题与从连接到串行端口的设备读取时没有关系).

5或6分钟后它会挂起.

我已经添加

try
  // entire body of procedure/function goes here

except
     on E: Exception do
        begin
           MessageDlg('Internal coding error in <function name>()',mtError,[mbOK],0);
        end;
end;

到每个函数(和项目文件中的Application.Run()),但我没有看到任何消息对话框.知道我怎么测试这个吗?

更新:我猜测是资源问题,无论是RAM还是MysqL数据库 – 但其他程序运行正常,并且每次测量只保存5个浮点数和时间戳,因此在这么短的时间后似乎都不太可能.

解决方案:有很多很棒的答案(谢谢和1个全方位),但我终于通过在IDE中运行并使用Run / Pause看到它是一个不断增加的循环来获得它(如建议的那样).

再次感谢大家.

解决方法

我尝试以下方法

> Attach并单击Pause并查看它的位置,正在运行的线程,正在等待的线程(如果所有线程都存在死锁).>将主要方法重构为一堆小方法(您可能已经这样做了),然后用虚拟/硬编码值替换小方法.这可能有所帮助,但不一定能识别故障块.>使用PerfMon或其他东西观察系统资源消耗(句柄,线程等).查看内存是否耗尽并开始使用HDD.>如果使用套接字,请检查读取超时是否设置为无穷大.如果是,则更改为某个值并观察超时.>在.NET中,可以启用所有异常的处理,这意味着在代码处理之前(如在catch语句中),IDE会在异常点处中断.如果可能的话,在Delphi中启用它,看看你是否得到任何.

猜你在找的Delphi相关文章