最近手头一个项目,程序突然出现无故自动退出的现象,客户抱怨,很头痛。
程序是工控程序,10个子线程与单片机通讯回收数据处理,数据处理用的BDE,尽可能的排除了程序里的越界溢出等问题。
但是还是找不到问题的根源所在。
在此开个贴,欢迎大家前来讨论,一般什么情况下,我们的程序一般什么情况下不提示错误的直接崩溃。有朋友说像我们这样的软件,因为客户基本上是24小时运行很少关电脑的,所以电脑使用时间长以后需要关机重启,
否则内存会产生大量碎片影响内存分配,不知是否有这样的情况
程序是工控程序,10个子线程与单片机通讯回收数据处理,数据处理用的BDE,尽可能的排除了程序里的越界溢出等问题。
但是还是找不到问题的根源所在。
在此开个贴,欢迎大家前来讨论,一般什么情况下,我们的程序一般什么情况下不提示错误的直接崩溃。有朋友说像我们这样的软件,因为客户基本上是24小时运行很少关电脑的,所以电脑使用时间长以后需要关机重启,
否则内存会产生大量碎片影响内存分配,不知是否有这样的情况
解决方案 »
- 有可判断已装控件的条件编译吗?
- DBGRID 如何高亮显示某一列~
- 深圳到南昌的火车票。车次为K106,转让。
- 帮忙推荐几个制作生成线性图(柱状、炳状)图的控件!!(急用)
- 这个程序错在哪里?在IE中加入工具条!
- 新手的弱问题。数组的赋值为什么有问题呢?
- 我建了一个链,最后想释放它,该怎么做?是不是用dispose()。distpose是用在一个节点上的,还是可以用在整条链上.
- 如何在程序中得到fastreport 的总页数(不是在报表上显示)
- 我的dbgrid中的中文字体为倒的,请问是什么原因?
- 几个小问题
- 关于delphi中cxgrid插入任意行的方法
- delphi7 ADOConnection1 连接远程mysql的问题
如Hexpate所说,使用eurakalog,关键是要找到引起崩溃的源头。
1. 病毒,没有理由的崩溃,毫无疑问病毒的祸害排在首位。
2. 共享资源多线程访问冲突,这个么...任何事情都有可能发生,与病毒相比,其后果有过之而无不及。
3. 接口参数不匹配(定义不清楚,理解不透,还有升级引发),这个么,通常是一条Call指令下去,就找不着北了,也是任何事情都有可能发生的。
4. OS或相关服务提供者升级补丁引发,这个问题有可能存在3当中所说的接口参数不匹配的问题,而往往更多的是因为某些开发人员的惰性,该做检查的不进行检查,对返回状态不理会等等。
5. 外部接口程序(钩子)引发。这个么通常比较多是反病毒软件的专利。
6. 粗心大意,该传值的地方传入了指针,该传指针的地方传值。例如4楼所说的fillchar(data,size,char),其中,如果把data传入了data_ptr,那么破坏的不只是data_ptr这一个变量,如果size足够大,其破坏性远难以估量,而往往data_ptr都在栈内存当中,这一条fillchar指令,直接把整个栈空间都弄乱了,找不着北那也不足为奇。