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

程序崩溃有关问题

2012-02-17 
程序崩溃问题今天偶然发现我写的应用程序崩溃了,记下崩溃地址是:3FD0938,查看相应的MAP文件,程序的最大地

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

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

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

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

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

[解决办法]
可以在模块出入口及关键函数内添加打印信息,逐步确认缩小异常范围。
[解决办法]
可以在.map文件中定位
[解决办法]
探讨
引用:
这个地址是系统弹出的MessageBox提示的,还是串口调试信息打印出来的呢?

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

顶起

[解决办法]
楼上的方法我不会用呢,我一般是加串口输出语句来缩小范围的,
其实楼主的错误一般是内存异常的情况
[解决办法]
sunrain_hjb侠
那个IDA的反汇编确实很有用
可惜不会用呢

[解决办法]
内存泄漏?系统异常?
[解决办法]
探讨
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……

[解决办法]
int *p;
p = NULL;
*p = 3;

不一定是这样明显的错误,也可能是内存越界访问之后无意中修改掉了后面内存部分的值,这时候异常还没有发生,可能过了很久,用到这部分被修改了的非预期的值之后,异常产生了.

并且你现在的异常本身的诱因就是地址错误,那么更加难找到.只能看看异常之前都运行了什么代码,一行一行检查.


[解决办法]
学习了。
[解决办法]
MARK,学习下
[解决办法]
在调试模式下运行,看看程序死在哪里,我都是这样调试的,有时候我的程序要运行一天才会出现错误,我就让程序在debug下运行
[解决办法]
说说怎么解决的哈

[解决办法]
可能是空指针造成的内存地址越界的问题。
[解决办法]
还真是高手,

本来想说2句,一看插不上嘴,

支持一下吧

热点排行