内存出错:C 程序内存访问出错解决方法



C编写运行效率高但是 C 最大好处和坏处是它允许直接操作内存如果使用不小心这就会导致非法推出
而且当过大时此类非常难查下面介绍种思路方法内存地址反向查找出问题

linux 平台:
1. 在信号处理部分, 加入代码捕捉引起地址思路方法参考文章
http://www-128.ibm.com/developerworks/cn/linux/l-sigdebug.html
   简单来说思路方法就是在注册自己信号处理在这个中加入获取内存地址代码并把结果写到个日志文件中
2. 编译 DEBUG 版本 (compile 时用 -g , 生成可执行文件后不用 strip 去掉symbol 信息)
3. 在出问题时, 查看日志记录, 得到地址.
4. 用objdump -S  导出Debug 版本汇编代码, 查找地址, 则得出那条语句出错.


windows 下c 语言调试
1. release 版编译/连接选项 把"generate debug info\" 打钩选择
2.dumpbin /DISASM /OUT:dump.out.txt.1 prep.exe 可反编译exe文件
3.得到非法地址(可从管理工具-事件查看器里得到)和汇编比较
Tags:  ie内存出错 内存出错怎么办 内存指令出错 内存出错

延伸阅读

最新评论

发表评论