程序会 无声无息的死掉,为什么?有那些可能原因呢?(50分)

  • 主题发起人 主题发起人 xiaolin0522
  • 开始时间 开始时间
X

xiaolin0522

Unregistered / Unconfirmed
GUEST, unregistred user!
多线程,网络通讯,数据库读写操作。
程序一般运行一两天就死一次
 
哈哈,程序不可靠啊!
继续修改!
 
有可能每次运行的时候都有部分内存没回收吧!
 
编一个看门狗的程序,程序死了就让它重新启动计算机,把程序加到启动组里边,计算机一启动就执行程序。
 
内存泄漏。
 
你就守在那里,看是无声无息还是另有原因。^_^
 
无声无息,听起来很诡秘啊!
狐狸总有尾巴的,同意楼上的看发
还是守在那里看看先!
 
为程序加个日志功能~每运行一个步骤都做一下记录~这样麻烦是麻烦一点~但是最后能查出问题是出在那里了
 
  本人也觉得一用到线程程序就有可能不稳定,这个问题值得深入讨论,什么情况最有可能造成泄漏,怎么避免,使用可视控件也有可能造成系统不稳定如何避免等。有过线程开发经历,并可以长期稳定运行的同学,一定要给偶们谈谈经验。
 
mmzmagic的方法非常好,诊断这种程序非常有效。
你是不是线程没有释放掉,每次产生一个线程,最后塞满了。
另外,在自动运行的程序里Delphi 的TTable控件千万别用,否则你会死的很惨。
 
程序死掉之后有什么症状?比如说CPU占用,内存占用,线程数等。
我以前写一个多线程程序,运行几天就会死掉,最后确定是因为数据库操作导致CPU占用达到100%而死。
 
to Li chao gang
数据库操作是不可以避免的,请问你最后是怎么解决的???
在线程里用TQuery控件会不会致线程不稳定?,应该怎么解决???
 [:)]不好意思,本人也急切的希望知道这方面的信息,所以借题发挥,希望不会喧宾夺主,谢谢!
 
啊,和我的问题一样啊。我写的一个多串口监控程序,一个串口开一个线程。由于使用协议转换设备,这些串口都是逻辑串口。程序跑1天后,就再也收不到串口的信息了,但是没死,应该是线程死了。后来做了个类似看门狗功能的时间片检测,以便重起线程,不过仍然没有起作用。搞死人!
 
肯定是内存泄漏。最简单的办法,在任务管理器里看程序占用的内存是不是持续增长,而不是最终处于一个较稳定的水平
 
大多数情况是由于内存泄漏造成的!
 
我的线程也是这样,当数据处理不过来时就死掉了,主线程仍能继续工作.
有时候很短的时间就死了,内存使用增长不明显.
 
多人接受答案了。
 
后退
顶部