ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

【c++基础】linux系统代码调试

2020-12-02 07:33:35  阅读:223  来源: 互联网

标签:泄漏 nm freespace c++ 内存 linux addr2line 调试


前言

 

aarch64-linux-gnu-nm freespace
aarch64-linux-nm freespace
aarch64-linux-gnu-nm freespace
aarch64-linux-gnu-objdump -x -s -d freespace
addr2line 0x7f924d2dd0 -e freespace -f
readelf -w freespace
-fsanitize=address -g && ./freespace

 

 

man addr2line ps -aux -h| grep freespace
top     如果遇到addr2line得到??:?或??:0的情况,原因就是编译得到的so文件没有附加上符号表(symbolic)信息。 nm命令被用于显示二进制目标文件的符号表; objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息;    

1.检测内存泄漏,可以用 ps -aux 等工具查看内存异常膨胀
2.定位并处理内存泄漏

  • 静态代码分析工具 BEAM PC-lint splint
  • 动态分析工具 valgrind 、purify
  • 重载类的 new 和 delete 添加日志信息,日志分析定位内存泄漏
最后,发现如果addr2line定位不到问题所在,很有可能是内存泄漏或者野指针,真正的错误位置不一定在运行出错的地方,而在别处!!!   参考 1. ARM Linux崩溃分析(一) - 应用程序Segmentation fault的分析; 2. unhandled level 2 translation fault (11); 3. OutOfMemoryError系列(8): Kill process or sacrifice child; 4. Linux如何调试内存泄漏; 5. linux 如何调试内存泄漏问题; 6. Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的); 完

标签:泄漏,nm,freespace,c++,内存,linux,addr2line,调试
来源: https://www.cnblogs.com/happyamyhope/p/14036118.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有