设为首页 收藏本站
查看: 273|回复: 0

[经验分享] linux 调试工具总结

[复制链接]

尚未签到

发表于 2016-2-1 09:10:52 | 显示全部楼层 |阅读模式
“工欲善其事 必先利其器”现在将一些常见的调试工具进行一下总结.

【1】
名称:MEMWATCH
功能:
1、MEMWATCH 支持 ANSI C
2、它提供结果日志纪录
3、能检测双重释放(double-free)
4、错误释放(erroneous free)
5、没有释放的内存(unfreed memory)、
6、溢出和下溢等等。
参考文献:
【1】:http://blog.csdn.net/lengxingfei/archive/2006/08/09/1040800.aspx

【2】
名称:YAMD
功能:
1、查找 c 和 c++ 中动态的、与内存分配有关的问题
参考文献:
【1】http://www.cs.hmc.edu/~nate/yamd/
【2】http://www.ppsql.com/server/p262/J26232224_2.shtml


【3】
名称:electric fence
功能:
1、检测内存泄露
2、检查数据越界
3、分配受保护的内存
参考文献:
【1】http://book.opensourceproject.org.cn/embedded/oreillybuildembed/index.html?page=opensource/belinuxsys-chp-11-sect-4.html
【2】http://book.opensourceproject.org.cn/embedded/oreillybuildembed/opensource/belinuxsys-chp-11-sect-4.html
【3】http://www.ppsql.com/server/p262/J26232224_3.shtml


【4】
名称:strace
功能:
1、显示用户空间程序发出的系统调用
2、显示调用的参数和返回值


【5】
名称:gdb
功能:
1、启动程序
2、使程序能够停止在指定文件的指定位置
3、查看程序变量值
4、改变程序执行期间的相关变量、路径等


【6】
名称:Oops
功能: 显示系统错误信息
参考文献:
【1】http://www.ibm.com/developerworks/cn/linux/sdk/l-debug/


【7】
名称:mtrace
功能:
1、检测一些内存分配和泄漏的失败等
参考文献:
【1】http://www.vbaccelerator.com/home/VB/Code/Techniques/RunTime_Debug_Tracing/mTrace_bas.asp
【2】http://www.yuanma.org/data/2006/0612/article_789.htm
【3】http://www.mylinux.com.cn/HTML/1183705958487.html



【8】
名称:binutil
说明:binutil为一个工具集合,包含如下的工具。
addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。
ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。
as 主要用来编译GNU C编译器gcc输出的汇编文件,产生的目标文件由连接器ld连接。
c++filt 连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。
gprof 显示程序调用段的各种数据。
ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。
nm 列出目标文件中的符号。
objcopy把一种目标文件中的内容复制到另一种类型的目标文件中.
objdump 显示一个或者更多目标文件的信息。显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。
ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。
readelf 显示ebf格式可执行文件的信息。
size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。
strings打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。
strip 丢弃目标文件中的全部或者特定符号。
libiberty 包含许多GNU程序都会用到的函数,这些程序有: getopt, obstack, strerror, strtol 和 strtoul.
libbfd 二进制文件描述库.
libopcodes 用来处理opcodes的库, 在生成一些应用程序的时候也会用到它, 比如objdump.Opcodes是文本格式可读的处理器操作指令.
功能:程序调试、归档等
参考文献:
http://man.iyunv.com/linux/


【9】
名称:Purify
功能:内存检查工具
参考文献:
http://blog.csdn.net/haoel/archive/2003/12/16/2904.aspx


【10】
名称:pc-lint
功能:C/C++的静态代码检测工具
参考文献:
【1】http://dev.yesky.com/134/2593634.shtml


【11】
名称:splint
说明:splint是一个动态检查C语言程序安全弱点和编写错误的程序
功能:
1、空引用错误
2、未定义的变量错误
3、类型错误
4、内存检查
参考文献:
【1】http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=splint&DokuWiki=e3b300af2d101a8bec5a4c805e678823
【2】http://www.splint.org/


【12】
名称:boundercheck
功能:检查内存泄露


【13】
名称:valgrind
功能:
1、检查内存错误
参考文献:
http://blog.donews.com/idlecat511/archive/2006/02/21/736877.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-172119-1-1.html 上篇帖子: Unix/Linux 的 Load问题 下篇帖子: linux后台运行命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表