C程序内存访问出错解决方法
C写的程序运行效率高,但是C的优缺点是允许直接操作内存。如果使用不慎,会导致程序非法启动。当程序太大时,这样的错误很难检查。下面是一个从错误的内存地址中找出有问题的程序的方法
linux平台:
1。在程序信号处理部分,添加捕获错误点地址的代码。简单来说,方法就是注册自己的信号处理函数,在这个函数中添加获取内存错误地址的代码,并将结果写入日志文件。
2。编译程序的调试版本(编译时使用-g,生成可执行文件后不要剥离符号信息)
3 .当程序出错时,检查日志记录并获得错误点的地址。
4。用objdump -S导出调试版的汇编代码,查错地址,会发现语句是错的。
Windows下的C语言调试
1。发布版本编译/连接选项,勾选“生成调试信息”2。dumpbin/disasm/out:dump . out . txt . 1 prep.exe可以反编译exe文件
3。获取程序的非法地址(可以从管理工具->事件查看器中获取)并与程序集进行比较。
0条评论