《Debugs Hacks中文版——深入调试的技术和工具》这本书是Miracle Linux一些同事合作,主要关注Linux下的调试技术和工具。
本文章以此书为蓝本进行总结,进行适当的补充。
下面以Debug hacks地图将内容组织如下:
0. 通用技术
objdump
strace
kprobes
systemtap
oprofile
valgrind
/proc/meminfo
/proc/<pid>/mem
1. 程序异常结束应对方法
1.1 应用问题
Oops信息解读
内存非法访问SEGV类型问题分析,可以通过core文件分析SEGV问题,通过watch分析非法内存访问,利用MALLOC_CHECK_调试free双重释放。
调试器GDB的基本使用方法。
1.2 内核问题
1.2.1 内核转储分析
如何设置内核转储?如何分析内核转储文件?
空指针引用,链表破坏等导致的Kernel Panic分析。
死循环,自旋锁,信号量等导致的内核停止响应问题。
实时进程停止响应。
2. 程序不结束异常
2.1 应用问题
用top查看负载是否过高?负载不高,则进行应用死锁问题分析;负载高,则进行死循环问题分析。
2.2 内核问题
设置内核WDT检测异常
通过SysRq分析问题