专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

请问关于应用程序崩溃的原因。

发布时间:2011-06-28 13:17:40 文章来源:www.iduyao.cn 采编人员:星星草
请教关于应用程序崩溃的原因。。。
本帖最后由 u011437506 于 2014-03-03 21:18:44 编辑
最近用VS2008开发了一套工控系统,控制生产线的运行,其中主要用到了COM、串口、网络、多线程技术。
但是程序一直存在一个bug,会导致应用程序崩溃,而且是毫无征兆的崩溃,我生成了debug版本在机器上运行,程序崩溃的时候,没有出现任何提示,窗口直接关闭(进程也崩溃了)。
我设置了windbg自动转储,可是,程序崩溃的时候,系统根本没有启动windbg,也就是说系统也没有捕捉到程序的异常。
我想请教各位,什么样的异常会产生这样的效果(程序直接崩溃,没有弹出框)?
多谢了,各位。
------解决方案--------------------
指针操作越界或者是资源访问冲突。


引用:
最近用VS2008开发了一套工控系统,控制生产线的运行,其中主要用到了COM、串口、网络、多线程技术。
但是程序一直存在一个bug,会导致应用程序崩溃,而且是毫无征兆的崩溃,我生成了debug版本在机器上运行,程序崩溃的时候,没有出现任何提示,窗口直接关闭(进程也崩溃了)。
我设置了windbg自动转储,可是,程序崩溃的时候,系统根本没有启动windbg,也就是说系统也没有捕捉到程序的异常。
我想请教各位,什么样的异常会产生这样的效果(程序直接崩溃,没有弹出框)?
多谢了,各位。

------解决方案--------------------
引用:
Quote: 引用:

指针操作越界或者是资源访问冲突。


Quote: 引用:

最近用VS2008开发了一套工控系统,控制生产线的运行,其中主要用到了COM、串口、网络、多线程技术。
但是程序一直存在一个bug,会导致应用程序崩溃,而且是毫无征兆的崩溃,我生成了debug版本在机器上运行,程序崩溃的时候,没有出现任何提示,窗口直接关闭(进程也崩溃了)。
我设置了windbg自动转储,可是,程序崩溃的时候,系统根本没有启动windbg,也就是说系统也没有捕捉到程序的异常。
我想请教各位,什么样的异常会产生这样的效果(程序直接崩溃,没有弹出框)?
多谢了,各位。


谢谢你的回答。
我做个实验,让指针越界访问,但是程序会报出异常,并出现窗口让我选择调试,程序并没有直接崩溃。
资源访问冲突会造成程序直接崩溃,并且不出现任何提示吗?
还请不吝赐教。


数组越界不一定总能触发异常,比如:


int main()
{
   int a[10];
   int b[10];
   b[0]=1;
   for(int i=0;i<=10;++i) a[i]=0;
   return b[0];
}

for中a数组可能会越界到b中,但由于b数组的内存还是属于进程的,不会触发异常,
但程序的结果显然是错误的.

如果你觉得完全不知如何下手,就多下断言,总能触发到断言的.
------解决方案--------------------
看能不能复现bug,找出Bug出现的规律。

另外多用断言,可以每个函数的开头和结尾都直接输出函数名__FILE__ __LINE__
这样bug一旦出现就可以知道在哪个函数里出了问题,然后就找出Bug了

另外建议,每个模块测试好了再组装。
------解决方案--------------------
引用:
看能不能复现bug,找出Bug出现的规律。

另外多用断言,可以每个函数的开头和结尾都直接输出函数名__FILE__ __LINE__
这样bug一旦出现就可以知道在哪个函数里出了问题,然后就找出Bug了

另外建议,每个模块测试好了再组装。
up
------解决方案--------------------
单测试没问题 一个一个模块加  找到那个异常模块
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: