首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

被逼疯了解决方法

2012-04-25 
被逼疯了因订单量多,计算量比较多,我把程序改成多线程,但是发现问题计算了总是在计算了1w多单后总是出现ab

被逼疯了
因订单量多,计算量比较多,我把程序改成多线程,但是发现问题计算了总是在计算了1w多单后总是出现abnormal program termination异常,而且无法捕获这个异常,这个错误是随机的,而且都是计算几个小时后才出现,好烦人,有没有哪个高人可以看看怎么办?(已经检查了多线程代码,读写的变量都通过TCriticalSection加锁了)

[解决办法]
象这种情况检查一下变量是否越界,还有就是输出日志,分析日志.
[解决办法]
你下载个EurekaLog 
它会记录你出错的位置的
[解决办法]
abnormal program termination 这个有可能是你访问了野指针或者变量越界造成的.只能通过代码一步一步分析排除,静下心来慢慢找.
[解决办法]

探讨
abnormal program termination 这个有可能是你访问了野指针或者变量越界造成的.只能通过代码一步一步分析排除,静下心来慢慢找.

[解决办法]
产生dump文件查查。
参见:setunhandledexceptionfilter
[解决办法]
试试 dump 文件吧,如果能取到堆栈,对解决问题应该很有帮助。
最简单的dump产生方式就是用 drwtsn32.exe -i,请 google 下用法。
[解决办法]
这种问题解决应该不太难吧。因为你的问题可以复现,好些人好多不能复现的怪异问题都搞定了。
你这样问题如果是内存已经写坏,定位就比较困难,因为coredown的地方不是在出错的地方。
如果不是内存写坏,那定位很容易,看堆栈就搞定了。
[解决办法]
写点代码,使程序崩溃时生成dump,windbg分析就知道在哪一行代码崩溃的了
[解决办法]
对此问题分析:
1.单线程运行良好,可排除内存泄露, 空指针引用, 数组直接越界,这几个主要问题。
2.多线程中,共享数据在没有锁好的情况下容易发生间接数组越界,要重点检查这个错误。
3.多线程程序运行速度增加,要检查内存碎片化,和进程虚拟内存空间内存使用量。

可以用注释法来解决这个问题。通过逐步注释,放开代码,缩小出问题的范围,最终定位
有问题的代码块。分析解决。

热点排行