10973|33

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

程序崩溃问题 [复制链接]

今天偶然发现我写的应用程序崩溃了,
记下崩溃地址是:3FD0938,
查看相应的MAP文件,程序的最大地址才62b0ac,

请问,我如何定位到问题源代码行或函数?

最新回复

静待楼主说出哪里错了。我以前用动态数组的时候利用SetSize(i)为动态数组设定大小,设定的后发现GetSize()的值不等于我设定的i,要比i小,我用i去控制访问动态数组的时候会出现越界访问的错误,表面的原因找到了,还是不知道为什么会出现这种错误。  详情 回复 发表于 2010-4-27 16:01
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个地址不是你的真实地址,你弄错了.崩溃的原因有很多.你可以写日志来临近大概的模块,然后 再具体的一步步的确定你的具体地址.
如果你程序做过修改,重点看一下修改的地方,对API的适用范围也要进行查看,有时候儿会出问题,比如时间函数有没有超范围等.
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个地址是系统弹出的MessageBox提示的,还是串口调试信息打印出来的呢?

你可以用IDA反汇编你的应用程序,然后找到相应的地址,从而确定出错的原因。
我一般都是这么做的,基本都能找到问题。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
顶起,学习哈,谢谢各位
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
Exception 'Undefined Instruction' (1): Thread-Id=05e00072(pth
=84de1000), Proc-Id=05df0072(pprc=84a0f3fc) 'PLAYER.EXE', VM-active=05df0072(ppr
c=84a0f3fc) 'PLAYER.EXE'
PC=41d1b6f0(common.dll+0x0004b6f0) RA=41d09f54(common.dll+0x00039f54) SP=0003fba
8, BVA=00000000

像上面这种出错信息,主要看PC和RA,在IDA中找到对应的地方。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 2 楼 sunrain_hjb 的回复:
这个地址是系统弹出的MessageBox提示的,还是串口调试信息打印出来的呢?

你可以用IDA反汇编你的应用程序,然后找到相应的地址,从而确定出错的原因。
我一般都是这么做的,基本都能找到问题。

顶起
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

7
 
可以在模块出入口及关键函数内添加打印信息,逐步确认缩小异常范围。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 joyzml 的回复:
引用 2 楼 sunrain_hjb 的回复:
这个地址是系统弹出的MessageBox提示的,还是串口调试信息打印出来的呢?

你可以用IDA反汇编你的应用程序,然后找到相应的地址,从而确定出错的原因。
我一般都是这么做的,基本都能找到问题。

顶起

我也顶起。。。系统不大的时候,我一般都是调试的。。再加上串口打印,然后一点一点的确定错误在哪里。。。一直不知道带系统怎么调试。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
是系统弹出的MessageBox提示的,地址应当没有抄错.
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
有时候出错信息是这样的,
PC=c003baf0(k.coredll.dll+0x0001baf0) RA=802154c8(kernel.dll+0x000064c8) SP=d19a
ecc8, BVA=ffffffff

所以,楼主需要确认出错的模块是什么,然后用IDA反汇编看一下,比较直接。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
楼上的方法我不会用呢,我一般是加串口输出语句来缩小范围的,
其实楼主的错误一般是内存异常的情况
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
sunrain_hjb侠
那个IDA的反汇编确实很有用
可惜不会用呢
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
内存泄漏?系统异常?
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

14
 
具体情况是:
操作执行异常:0xC0000005
地址:3FD0938

今天又出现了一次。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 
[url=http://blog.eeworld.net/singlerace/archive/2009/02/26/3940619.aspx][/url]

楼主也可以参考这里,配合博主提供的工具,可以帮助诊断问题。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 4 楼 sunrain_hjb 的回复:
Exception 'Undefined Instruction' (1): Thread-Id=05e00072(pth
=84de1000), Proc-Id=05df0072(pprc=84a0f3fc) 'PLAYER.EXE', VM-active=05df0072(ppr
c=84a0f3fc) 'PLAYER.EXE'
PC=41d1b6f0(common.dll+0x0004……


我一般看common。map 就可以定位到出错的函数了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
我用手機拍下報錯的圖片:
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

18
 
看起来有点像空指针造成的异常。

  1. int *p;
  2. p = NULL;
  3. *p = 3;
复制代码
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

19
 
楼上所说的是对的,并且是传给strcpy之类的ASCII版C函数造成的.
现在我正在定位到某个具体的函数上.

  1. CHAR *p1;
  2. p1 = NULL;
  3. strcpy(p1,"aaa");
复制代码

弹出下面的出错界面
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

20
 

  1. 03FD0900   bne       03FD0938
  2. 03FD0904   ldr       r1, [r0], #4
  3. 03FD0908   sub       r2, r1, r12
  4. 03FD090C   bic       r2, r2, r1
  5. 03FD0910   ands      r2, r2, r12, lsl #7
复制代码
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表