譯者序
前言
緻謝
第1章 宏觀策略 1
第1條:通過事務追蹤係統處理所有的問題 1
第2條:在網上確切地查詢你所遇到的問題,以尋求解決問題的靈感 4
第3條:確保前置條件與後置條件都能夠得到滿足 6
第4條:從具體問題入手嚮上追查bug,或從高層程序入手嚮下追查bug 7
第5條:在能夠正常運作的係統與發生故障的係統之間尋找差彆 9
第6條:使用軟件自身的調試機製 13
第7條:試著用多種工具構建軟件,並將其放在不同的環境下執行 16
第8條:把工作焦點放在最為重要的問題上 20
第2章 通用的方法與做法 23
第9條:相信自己能夠把問題調試好 23
第10條:高效地重現程序中的問題 26
第11條:修改完代碼之後,要能夠盡快看到結果 29
第12條:將復雜的測試場景自動化 30
第13條:使自己盡可能多地觀察到與調試有關的數據 32
第14條:考慮對軟件進行更新 34
第15條:查看第三方組件的源代碼,以瞭解其用法 35
第16條:使用專門的監測及測試設備 37
第17條:使故障更加突齣 40
第18條:從自己的桌麵計算機上調試那些不太好用的係統 42
第19條:使調試任務自動化 44
第20條:開始調試之前與調試完畢之後都要把程序清理乾淨 46
第21條:把屬於同一個類型的所有問題全都修復好 47
第3章 通用的工具與技術 49
第22條:用Unix命令行工具對調試數據進行分析 49
第23條:掌握命令行工具的各種選項及習慣用法 55
第24條:用編輯器對調試程序時所需的數據進行瀏覽 57
第25條:優化工作環境 59
第26條:用版本控製係統尋找bug發生的原因及經過 64
第27條:用工具監測由多個獨立程序所構成的係統 67
第4章 調試器的使用技巧 71
第28條:編譯代碼時把符號信息包含進來,以便於調試 72
第29條:對代碼進行單步調試 76
第30條:設置代碼斷點和數據斷點 77
第31條:瞭解反嚮調試功能 80
第32條:查看例程之間的相互調用情況 83
第33條:查看變量及錶達式的值,以尋找程序中的錯誤 84
第34條:瞭解怎樣把調試器連接到正在運行的進程上 87
第35條:瞭解怎樣運用核心轉儲信息來進行調試 89
第36條:把調試工具設置好 92
第37條:學會查看匯編代碼及原始內存 95
第5章 編程技術 100
第38條:對可疑的代碼進行評審,並手工演練這些代碼 100
第39條:審讀代碼並與同事討論 102
第40條:給軟件添加調試機製 103
第41條:添加日誌語句 107
第42條:對軟件進行單元測試 111
第43條:用斷言進行調試 114
第44條:改動受測程序,以驗證自己的推想 118
第45條:盡量縮小正確範例與錯誤代碼之間的差距 119
第46條:簡化可疑代碼 120
第47條:將可疑代碼改用另外一種編程語言來寫 123
第48條:改善可疑代碼的可讀性與結構 124
第49條:要清除bug的根源,而不僅僅消除其癥狀 128
第6章 編譯時的調試技術 130
第50條:對生成的代碼進行檢視 130
第51條:使用靜態程序分析工具 133
第52條:對項目進行配置,令程序能夠以固定的方式構建和執行 138
第53條:對調試所用程序庫及構建代碼時所應執行的檢查進行配置 141
第7章 運行時的調試技術 147
第54條:通過構建測試用例來尋找錯誤 147
第55條:令軟件在遇到問題時盡早退齣 151
第56條:檢視應用程序的日誌文件 152
第57條:對係統和進程所執行的操作進行性能評測 156
第58條:追蹤程序的執行情況 160
第59條:使用動態程序分析工具 166
第8章 調試多綫程的代碼 169
第60條:通過事後調試來分析死鎖問題 169
第61條:捕獲並重現 176
第62條:用專門的工具來探查死鎖與競爭條件問題 180
第63條:把不確定的因素隔離齣來,或將其移除 186
第64條:檢查資源爭用情況,以解決與可伸縮性有關的問題 188
第65條:用性能計數器尋找僞共享問題 191
第66條:考慮用更為高級的抽象機製來重寫代碼 195
網上資源 203
· · · · · · (
收起)