当前位置: 代码迷 >> WinCE >> 程序崩溃有关问题
  详细解决方案

程序崩溃有关问题

热度:116   发布时间:2016-04-28 13:37:19.0
程序崩溃问题
今天偶然发现我写的应用程序崩溃了,
记下崩溃地址是: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句,一看插不上嘴,

支持一下吧
  相关解决方案