前言
写简历时,很害怕自己没什么特点,与别人没啥区分度,而平时又感觉改bug比较多。。。于是在自我评价一栏大胆的写上
热爱trouble-shooting
ChangeLog:
2018-6-10 update vmstat
从此走上被虐之路。。。
正文
因为我自己主要是Linux 下 C/C++ ,所以enmmm 还是这方面做的比较多。之前也写过一篇类似的博客,主要简述的是改bug的思想(见这篇),这篇主要是从实际工具出发,简单介绍工具的使用及思路。(当然反手一个printf也算是一种工具。。)
主要工具
GDB strace pstack valgrind iotop netstat/ss wireshark/tcpdump
辅助性的
top ps
一运行就段错误的。直接生成coredump文件,生成的方法见这篇
如果堆栈的信息完好,可以之间看到问题出在哪里,一般 print
变量,看看是否是地址越界之类的。
运行起来不动的。
可能是死循环/死锁。
对于多线程死锁,建议通过ps
找到pid后, pstack <pid>
可以看到每个线程的调用栈。
GDB的常用命令
ctrl + l 清屏。。恩,很常用
p/print 打印变量
b 行号 在第几行设置断点
b 函数名 在函数处设置断点
r/run 运行程序
c/continue 在断点停下之后继续执行