目錄 第1章 熱身準備
1.調(diào)試是什么
2.Debug hacks的地圖
3.調(diào)試的心得
第2章 調(diào)試前的必知必會
4.獲取進程的內(nèi)核轉(zhuǎn)儲
5.調(diào)試器(GDB)的基本用法(之一)
6.調(diào)試器(GDB)的基本使用方法(之二)
7.調(diào)試器(GDB)的基本使用方法(之三)
8.Intel架構(gòu)的基本知識
9.調(diào)試時必需的棧知識
10.函數(shù)調(diào)用時的參數(shù)傳遞方法(x86_64篇)
11.函數(shù)調(diào)用時的參數(shù)傳遞方法(i386篇)
12.函數(shù)調(diào)用時的參數(shù)傳遞方法(C++篇)
13.怎樣學習匯編語言
14.從匯編語言查找相應的源代碼
第3章 內(nèi)核調(diào)試的準備
15.Oops信息的解讀方法
16.使用minicom進行串口連接
17.通過網(wǎng)絡獲取內(nèi)核消息
18.使用SysRq鍵調(diào)試
19.使用diskdump獲取內(nèi)核崩潰轉(zhuǎn)儲
20.使用kdump獲取內(nèi)核崩潰轉(zhuǎn)儲
21.crash命令的使用方法
22.死機時利用IPMI watchdog timer獲取崩潰轉(zhuǎn)儲
23.用NMI watchdog在死機時獲取崩潰轉(zhuǎn)儲
24.內(nèi)核獨有的匯編指令(之一)
25.內(nèi)核獨有的匯編指令(之二)
第4章 應用程序調(diào)試實踐
26.發(fā)生SIGSEGV,應用程序異常停止
27.backtrace無法正確顯示
28.數(shù)組非法訪問導致內(nèi)存破壞
29.利用監(jiān)視點檢測非法內(nèi)存訪問
30.malloc()和free()發(fā)生故障
31.應用程序停止響應(死鎖篇)
32.應用程序停止響應(死循環(huán)篇)
第5章 實踐內(nèi)核調(diào)試
33.kernel panic(空指針引用篇)
34.kernel panic(鏈表破壞篇)
35.kernel panic
36.內(nèi)核停止響應(死循環(huán)篇)
37.內(nèi)核停止響應(自旋鎖篇之一)
38.內(nèi)核停止響應(自旋鎖篇之二)
39.內(nèi)核停止響應(信號量篇)
40.實時進程停止響應
41.運行緩慢的故障
42.CPU負載過高的故障
第6章 高手們的調(diào)試技術(shù)
43.使用strace尋找故障原因的線索
44.objdump的方便選項
45.Valgrind的使用方法(基本篇)
46.Valgrind的使用方法(實踐篇)
47.利用kprobes獲取內(nèi)核內(nèi)部信息
48.使用jprobes查看內(nèi)核內(nèi)部的信息
49.使用kprobes獲取內(nèi)核內(nèi)部任意位置的信息
50.使用kprobes在內(nèi)核內(nèi)部任意位置通過變量名獲取信息
51.使用KAHO獲取被編譯器優(yōu)化掉的變量的值
52.使用systemtap調(diào)試運行中的內(nèi)核(之一)
53.使用systemtap調(diào)試運行中的內(nèi)核(之二)
54./proc/meminfo中的寶藏
55.用/proc/<PID>/mem快速讀取進程的內(nèi)存內(nèi)容
56.OOM Killer的行為和原理
57.錯誤注入
58.利用錯誤注入發(fā)現(xiàn)Linux內(nèi)核的潛在bug
59.Linux內(nèi)核的init節(jié)
60.解決性能問題
61.利用VMware Vprobe獲取信息
62.用Xen獲取內(nèi)存轉(zhuǎn)儲
63.理解用GOT/PLT調(diào)用函數(shù)的原理
64.調(diào)試initramfs鏡像
65.使用RT Watchdog檢測實時進程失去響應
66.調(diào)查手頭的x86機器是否支持64位模式
附錄 Debug hacks術(shù)語的基礎(chǔ)知識
索引
《DEBUG HACKS中文版--深入調(diào)試的技術(shù)和工具》是Miracle Linux 的創(chuàng)始人吉岡弘隆和幾位工程師們多年從事內(nèi)核開發(fā)的經(jīng)驗積累。
從調(diào)試器的基本使用方法、匯編的基礎(chǔ)知識開始,到內(nèi)核錯誤信息捕捉、應用程序調(diào)試、內(nèi)核調(diào)試,本書深入淺出地講解了Linux 下應用程序和內(nèi)核的調(diào)試技巧。
雖然《DEBUG HACKS中文版--深入調(diào)試的技術(shù)和工具》的出發(fā)點是Linux 內(nèi)核調(diào)試,但書中的絕大部分知識在許多領(lǐng)域都能派上用場。
如Linux 應用程序開發(fā),嵌入式Linux 開發(fā),甚至時下流行的iOS 應用程序開發(fā),只要從事應用程序開發(fā)的工作,就會涉及調(diào)試,那么讀一讀本書也不無裨益。