被逼疯了解决方法
被逼疯了因订单量多,计算量比较多,我把程序改成多线程,但是发现问题计算了总是在计算了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.多线程程序运行速度增加,要检查内存碎片化,和进程虚拟内存空间内存使用量。
可以用注释法来解决这个问题。通过逐步注释,放开代码,缩小出问题的范围,最终定位
有问题的代码块。分析解决。