linux debug 工具栏,linux下常见的debug工具的使用

仅仅是介绍一些使用心得,并非manual,欲知详情请google。。。

---------------------------------------------------------------------------------------------------------------------------

在实验室里混了这么久,蓦然回首,发现其实自己主要做的工作就是debug和fix bug。。。现在将自己debug时用到的一些工具分享出来,share给有需要的朋友,大牛看了请一笑了之。

(1)GDB:最正宗最传统的debug工具,如果做kernel的开发,还有KDB可以使用。

小tips:

<1>可以attach到某一个进程进行调试,注意如果进程里有fork和exec调用来切换到其它进程的话,需要特殊处理

<2>多线程也可以用gdb来调试,但是我用了之后感觉并不是很好。。。

<3>如果遇到段错误或者程序crush这样的错误,可以使用gdb来调试core dump文件,但是生成core dump需要先进行设置(具体请google~)

<4>注意内联函数是不能被gdb跟踪的

<5>gdb很强大,请耐心点看manual。。。

链接:

http://www.gnu.org/software/gdb/documentation/

(2)wireshark:虽然不是调试工具,但如果是做网络程序的开发,非常有用。

小tips:

<1>如果程序里的通信协议是使用字符串编码,非常好,但是如果使用二进制编码,wireshark不好用

<2>对于tcp流,可以在某一个包点击右键:"follow tcp stream",可以看到该tcp流的全部信息

<3>如果仅仅想看截取包的开头处的信息,可以将包截短,在"capture options"里的"limit each packet to"设置

<4>windows和linux下都有wireshark。。。

链接:

http://www.wireshark.org/docs/wsug_html_chunked/

(3)strace:截获system call,如果能够看到某个system call的返回值错误,可以很轻松地找到bug原因。

小tips:

<1>strace也可以像gdb一样去attach一个正在运行的进程,使用-p pid(进程号)即可

<2>strace的输出比较多,可以-o 输出到文件里,分析的时候请耐心。。。

链接:

http://people.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03s02.html

(4)inotify-tools:截获文件系统触发的事件,这个是基于inotify框架来写的一个工具,但是感觉和strace相反,它给出的信息过于少。

链接:

https://github.com/rvoicilas/inotify-tools/wiki/

(5)printf大法:最原始的未必就不好,有时也很有用。

除了传统的printf,还有一些类似的东西

perror:打印程序errorno

http://pubs.opengroup.org/onlinepubs/009695399/functions/perror.html

查看log信息:如果你是去修改别人的开源程序(经常有实验室这样干吧),那么它的log信息就很重要,记得按照你的需求去设置log level

printk:kernel开发中的printf

----------------------------------------------------------------------------------------------------------------------------

即使把太平洋里水全部倒出来,也浇不息我debug的热情!但是我能把太平洋的水全倒出来吗?不能,所以我对debug没有热情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值