每個軟體開發者與IT專家都知道高效除錯的重要性。除錯通常佔據開發者大部分的時間,而掌握技巧需要一輩子的投入。作者Diomidis Spinellis在這本書中提供了系統化分類、解析說明、最有效的除錯方法、策略、技巧以及工具,協助有經驗的程式設計師加速掌握技能。
2 U# L7 L! H* v1 d4 C 作者以超過三十五年以上的經驗幫助讀者擴展除錯技術,於各種情境選擇最佳方式。書中展示了大量通用原則、高階策略、扎實技巧、高效工具、創意絕招與行為軌跡的高效除錯範例。" t5 a; l' l0 Z6 I, j* y7 W) ~! G4 Y
Spinellis的66個具體作法討論除錯的各種面向,並以一步步的指示與實際程式碼進行說明。他討論了現代軟體系統中發生的各種問題,特別是元件間的複雜互動與分散於全球主機環境中執行的服務。
8 `$ M1 I6 F1 x R+ Y& g 無論你正在處理個別的執行期錯誤或整個企業系統的災難,這本書都能幫助你快速無痛的完成任務。
/ K2 O8 W- n7 c8 a 關鍵內容包括:
; g0 M. t" ^. O- i) U" n8 r ?處理各種問題的高階策略與方法
; a$ L: C) O, j2 Q" C ?適用於程式設計、編譯與執行程式的特定技巧 V+ L) `1 C5 ~, u/ N4 n
?更好的運用除錯工具$ r# y( O9 f# S( K3 R
?值得學習的通用技巧與工具
6 E, e5 f: u# S! [" \ ?解決複雜謎團的進階點子與技巧
; m4 l5 ^0 d8 H1 L& F4 S ?讓程式易於除錯的建議
6 e6 u7 y4 N: {* e7 _/ p ?多執行緒、非同步與嵌入程式除錯的特殊方式
) d/ y0 Z3 \- |9 h4 \ ?改善軟體設計、建構與管理以避免錯誤
. h) z4 Z2 q0 N: ] 目錄
7 ?, H- ~; P& j {- B- Z 圖目錄2 N& y: J! G7 V# ]% {. ~- ~
程式列目錄
+ V+ B k) _7 _7 I) o, l7 e 前言
' p1 F$ T& K) j9 ] 致謝1 N& x& d2 f/ w
關於作者5 q. |6 C( r/ ]( ~5 P
第1章 高階策略
, t: U3 d' X3 U 作法01 透過問題記錄系統處理所有問題
# W5 ^8 [# e# c3 G. u 作法02 以精確的關鍵字上網查詢問題的線索+ c7 r7 }4 _7 M a5 a9 T+ O
作法03 確認滿足前後條件# X$ f. ?; ^& A* s( W* v
作法04 從問題向上到錯誤或從程式的開始向下到錯誤! D" e* l) \6 P0 E; f
作法05 找出新舊系統間的差異+ p4 h1 u, ?( k$ L+ Y: k
作法06 使用軟體的除錯設施
4 d( r% G. d% I) W 作法07 建構與執行環境的多元化2 F( P% [: ]& b x7 n! I8 K( C; j
作法08 專注於最重要的問題
! \* e4 S& B! e% J& q 第2章 通用方法與實踐: e8 h! b1 ]: w9 M2 X/ j- x# M; b
作法09 讓自己準備好& k0 M8 w4 i: {- h
作法10 有效的重複產生問題# Z. l# d; T6 R4 C+ f
作法11 減少來回修改的時間* a( ~+ T1 W( P; F# c: W7 H4 ~
作法12 複雜測試場合的自動化5 b+ O; X. h' e8 w
作法13 展示你的除錯資料- X$ S5 D5 E/ ?& R { } a
作法14 更新你的軟體
/ a9 [& u W( @3 | 作法15 參考第三方原始碼, q# k' p& {4 n8 a' J% f
作法16 使用專用監控與程式設備$ s( D& G* ^! i$ I- A7 s+ [
作法17 放大失敗的效應3 C9 X/ o7 @# D: J9 k- }
作法18 從你的桌面對遠端系統除錯
& Q3 x! B8 P2 ]! Q. y {( @* J; a 作法19 除錯任務自動化 x' u/ b" h3 M; I- D" l
作法20 除錯前後的清理工作5 o9 |( z5 L* c: J
作法21 修理有問題類別的所有實例: ?6 o3 P8 U5 Y
第3章 通用工具與技巧
/ m7 ?# Q9 s9 W0 B' j$ O+ w9 X9 b 作法22 以 Unix 命令列工具分析除錯資料( k" Z- ]: D- R& B k- ~$ ^" b# }( R
作法23 使用命令列工具選項* J. X7 S7 ?: m. T" ]
作法24 以編輯器探索除錯資料: }9 n9 N" x: ?# S# C2 c* O8 E' n% v) F
作法25 工作環境最佳化# ?8 _( l" b W# k" \, W+ [/ s
作法26 以版本控制系統追獵錯誤的成因與歷史
6 I% @3 E! T4 V+ H 作法27 使用系統的獨立行程監控工具! r% D; F2 ~* s# i8 q6 N
第4章 除錯技巧
% T6 |2 @# |* Y G* a$ \ V) p' O* q 作法28 使用符號除錯編譯的程式
- h. D% C! Y# k+ p1 f7 O- p 作法29 逐步執行程式
, m8 W* a/ c$ ]* J( w8 r- a8 q 作法30 使用程式與資料中斷點" s/ q' o$ {+ e4 a j6 R m9 @
作法31 熟悉反向除錯
& |. L5 Y r V' w! ~0 @8 j 作法32 沿著程序間的呼叫: t; t# D6 d) z5 o+ F0 u6 x
作法33 檢視變數與表達式的值以找尋錯誤7 O7 m8 t3 x6 u' v/ j; d, m
作法34 知道如何將除錯工具附在行程上4 q) b* I( p2 Q, y8 k( }) r6 f
作法35 認識如何使用核心傾印. L! r, O7 a+ N
作法36 調校你的除錯工具& p: x; j8 [* O) p& Z/ b
作法37 認識如何檢視組合語言程式碼與原始記憶體1 P0 b& N9 ?, \- [- |" F
第5章 程式設計技巧
7 B' H# R- x8 w 作法38 審核與手動執行可疑程式碼
^9 ~* d: b3 k9 P 作法39 與同僚一起檢視你的程式碼
9 N' X( P" F& a3 }9 _. ] 作法40 加入除錯功能
# F# H( p! n! N8 [2 Z! Y: R 作法41 加入日誌記錄陳述
, j5 {* u0 w6 n9 G1 @) B 作法42 使用單元測試- Y# _) N2 @/ L s) ]1 {- h5 ^ [$ o
作法43 使用斷言
# t) a! \8 V- W# g' r 作法44 擾動程式以檢驗你的推論& m: F& A# g L) N
作法45 將可行與失敗程式間的差異最小化! V8 W% |- M/ m) s2 x8 x
作法46 簡化可疑程式
; {0 |( V7 v( {9 A2 Z: I 作法47 以其他語言重寫可疑的程式! K X$ b( C C" P; s
作法48 改善可疑程式碼的易讀性與結構- _+ D# q3 ^3 X
作法49 治本而非治標4 O0 U) h8 h, s
第6章 編譯期技巧) j% A: y+ V1 g1 V
作法50 檢視產生的程式碼. A0 \6 Q0 O5 M R5 f
作法51 使用靜態程式分析
* g& q, p6 G1 A6 T7 B 作法52 設定決定性建構與執行- B, u# y" o2 a" N2 {
作法53 設定使用除錯函式庫, W. ? w3 N( T5 E* ~1 E6 O
第7章 執行期技巧
0 x& X' A! `( Q4 p- w! H* Q& t 作法54 建構測試案例以找出問題' I+ _% H8 y# v# {' a9 S
作法55 盡快失敗
: a L. [/ n& a" z3 V 作法56 檢視應用程式日誌檔案
( o" ^- B N; p 作法57 系統與行程操作的側寫
% j1 a- f! T& P4 \% M: g 作法58 追蹤程式執行
" D+ G7 @" h3 V 作法59 使用動態程式分析工具4 V) o7 X! t0 l* o; e
第8章 多執行緒程式除錯
& t" s: Z* W" j7 d7 z 作法60 以剖析除錯分析死結
* b+ {: G5 `3 h* R0 l 作法61 擷取與複製
0 o3 w6 P5 E- \ a# T; M. D 作法62 以專用工具找出死結與競爭狀況
W* E7 Q8 K3 M0 ?: `! e8 e: M 作法63 隔離與移除不確定性
9 i. u% z3 e3 o% ~" Y7 ` 作法64 檢視競爭以調查可擴展性問題) @+ S3 }+ d- L
作法65 以效能監視器找出假共用
& U2 h: _1 [/ h' m( q 作法66 以高階抽象重寫程式
6 T S) O% g. [& \. g/ @# Q, [ 網路資源3 K& P9 @. Z9 E. l9 Y
游客,本下载内容需要支付 6共享币,购买后显示下载链接立即支付
! D, ? |# D/ J7 A' ~2 V
$ z: @5 b$ K. e. _; m# L9 \ |