社区
界面
帖子详情
程序崩溃的原因及查找方法
Kinglin_sky
2009-05-07 10:08:21
在改一个VC 6.0写的 代码, 再退出程序时,有时会崩溃, 请问有可能是哪些原因造成的, 有哪些方法可以查找原因?
...全文
1479
12
打赏
收藏
程序崩溃的原因及查找方法
在改一个VC 6.0写的 代码, 再退出程序时,有时会崩溃, 请问有可能是哪些原因造成的, 有哪些方法可以查找原因?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LeviZhou
2009-05-11
打赏
举报
回复
[Quote=引用 8 楼 Kinglin_sky 的回复:]
可是,大部分时间它是运行正常的, 是不是没崩溃时,程序没运行到崩溃的地方,还是错误没有发生呢!
[/Quote]
随机发生的bug基本都和内存操作不当有关系, 像缓冲区溢出之类的,
有可能你的某段内存操作的代码将某个指针给弄坏了,但用if(p) 检查 p 貌似还是有效的, 但引用p的时候会出问题。
你可以debug运行,出错时一定会有什么蛛丝马迹的, 我认为CallStack是可以给你很多信息,如果你的代码不是很庞大。
实在不行也可以生成一个带调试信息的Release版本,用K2Mon等工具抓个dump文件,之后用WinDbg分析。
antheazhang
2009-05-08
打赏
举报
回复
这种情况见得多了,我一般都是先“重新启动工程,清理解决方案,重新生成”,估计是反复生成解决方案时垃圾太多了(我猜的)。
zwtchy123
2009-05-08
打赏
举报
回复
uping
Allen_zhang
2009-05-07
打赏
举报
回复
调试,崩溃的时候查看堆栈信息,看看你的代码那里出错了
主要是指针,很多时候是指针和内存的问题
半吊子全栈工匠
2009-05-07
打赏
举报
回复
用Purify监测一下内存泄漏吧
Kinglin_sky
2009-05-07
打赏
举报
回复
谢谢各位的意见, 崩溃的概率大概是百分之一的样子, 奔溃时,弹出个提示框上面说什么内存 不能读?
zhourenyun
2009-05-07
打赏
举报
回复
还有可能是你内存越界,然后在删除的时候显示错误。
LeviZhou
2009-05-07
打赏
举报
回复
[Quote=引用 1 楼 wutaihua 的回复:]
1、退出的时候,系统会回收资源,你这时候,如果有new出来的内存,没有delete掉的话,有可能出现。
2、还有一个就是访问已经销毁的资源,比如某个窗体,已经被销毁了,但是你退出的时候。继续有程序向其发消息,这样就会使用无效的空句柄,导致访问空资源引发崩溃。
3、程序崩溃的时候,一般都有点提示,看看output区和堆栈区。仔细找下蛛丝马迹,这都是锻炼出来的。而且不是太难,随着编程技术的提高,找这个也会驾轻就熟的…
[/Quote]
自己碰到的是饮用已销毁资源引起的多,尤其是饮用已销毁的指针成员。
一般crash时都会提示让你debug,可以看一下CallStack窗口,不知道VC6有没有,2003有,不行就转化一下,2003调试方便多了
wutaihua
2009-05-07
打赏
举报
回复
有一本书,叫《WINDOWS程序调试》,楼主可以下电子书来看。
wutaihua
2009-05-07
打赏
举报
回复
1、退出的时候,系统会回收资源,你这时候,如果有new出来的内存,没有delete掉的话,有可能出现。
2、还有一个就是访问已经销毁的资源,比如某个窗体,已经被销毁了,但是你退出的时候。继续有程序向其发消息,这样就会使用无效的空句柄,导致访问空资源引发崩溃。
3、程序崩溃的时候,一般都有点提示,看看output区和堆栈区。仔细找下蛛丝马迹,这都是锻炼出来的。而且不是太难,随着编程技术的提高,找这个也会驾轻就熟的。
zhourenyun
2009-05-07
打赏
举报
回复
1 你的数组 有没有越界
2 你NEW出来的指针 存放数据的时候有没有越界
3 看你的指针指向位置有没有变化 (重新定位)
4........其他高人补充
========================
利用CALL stack看下说不定能解决。
一般越界的话很难排查的,自己慢慢研究下代码吧。
个人意见。
Kinglin_sky
2009-05-07
打赏
举报
回复
可是,大部分时间它是运行正常的, 是不是没崩溃时,程序没运行到崩溃的地方,还是错误没有发生呢!
Android平台的
崩溃
捕获机制及实现
Android平台的
崩溃
捕获机制视频教程,该课程主要对Java
崩溃
和Native
崩溃
的捕获机制进行分析,并结合简单的实例演示实现
方法
。讲师介绍:贾志凯,Testin
崩溃
分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。
【
程序
崩溃
的
原因
及处理
方法
】
这种错误会导致
程序
崩溃
,因为操作系统会检测到
程序
尝试访问一个无效的内存地址,并强制关闭该
程序
。因此,对于嵌入式系统中的
程序
错误,需要采取一些特殊的处理
方法
来确保系统的可靠性和稳定性。
c++
程序
如何定位
程序
崩溃
点
在 C
程序
中,定位
程序
崩溃
点通常可以通过以下方式进行: 使用调试器:使用调试器可以在
程序
崩溃
时获取
程序
状态的快照,以便更容易地定位问题。可以使用 gdb、lldb、Visual Studio 等调试器。在调试器中,您可以...
c++ 使用map文件
查找
程序
崩溃
原因
(通过VA定位源
程序
行号)
一般
程序
崩溃
可以通过debug,找到
程序
在那一行代码
崩溃
了,最近编一个多线程的
程序
,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的
方法
来找
原因
,通过生成map文件,由于2005取消map文件...
Linux
程序
崩溃
分析(一)
我们在做Linux开发时,常常会遇到
程序
崩溃
的问题,这时会用gdb或者通过查看反汇编的方式去对
程序
进行分析,接下来,我们从底层的角度,去讲述如何分析
程序
崩溃
的
原因
。 一、常见BUG 在进行分析前,先看看我总结归纳...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章