注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合Why Programs Fail:系統(tǒng)化調(diào)試指南

Why Programs Fail:系統(tǒng)化調(diào)試指南

Why Programs Fail:系統(tǒng)化調(diào)試指南

定 價(jià):¥59.00

作 者: (德)Andreas Zeller;王詠武;王詠剛譯
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 軟件測試及維護(hù)

ISBN: 9787121036866 出版時(shí)間: 2007-03-01 包裝: 膠版紙
開本: 16開 頁數(shù): 390 字?jǐn)?shù):  

內(nèi)容簡介

  調(diào)試一直是軟件開發(fā)過程中“最痛苦”的環(huán)節(jié),本書有望改變這一現(xiàn)狀,因?yàn)樗鼘⒄{(diào)試的科學(xué)原理與業(yè)界的實(shí)踐經(jīng)驗(yàn)有機(jī)地融合起來,闡釋了有關(guān)發(fā)現(xiàn)和修正程序錯(cuò)誤的最佳方法和實(shí)踐過程。.本書一共分為15章,以系統(tǒng)化的方式向讀者介紹了整個(gè)調(diào)試過程,從跟蹤和重現(xiàn)故障開始,一直到自動(dòng)化和簡化測試用例,尋找故障最可能的來源,分離故障的起因和結(jié)果,并最終修正程序缺陷。本書不僅涵蓋了delta調(diào)試、程序切片、觀察、監(jiān)視、斷言、檢測反常等多種基本的靜態(tài)和動(dòng)態(tài)程序分析技術(shù),還用淺顯的語言說明如何使用一些調(diào)試領(lǐng)域最前沿的高水平調(diào)試工具。..本書適于那些希望掌握如何以系統(tǒng)化和自動(dòng)化的方式調(diào)試程序的計(jì)算機(jī)編程人員、及相關(guān)專業(yè)的研究生以及高年級本科生。...

作者簡介

  本書提供作譯者介紹Andreas Zeller是德國Saarland大學(xué)的計(jì)算機(jī)科學(xué)教授。他的研究方向集中在提高程序員的生產(chǎn)力方面:即哪些事情可以使程序員的生活和工作更輕松?在Linux和UNIX程序員中,Zeller因GNU DDD——一個(gè)擁有內(nèi)嵌數(shù)據(jù)可視化機(jī)制的調(diào)試器前端——而享有盛名。在研究人員和高級程序員中,Zeller因?yàn)閐elta調(diào)試——一種可以自動(dòng)分離計(jì)算機(jī)程序故障起因的技術(shù)——而聲名顯赫。.他的工作時(shí)間被平均地分給教學(xué)、閱讀、寫作、編程,以及在大西洋兩岸飛來飛去。他與家人一起生活在德法邊界德國一側(cè)的...

圖書目錄

第1章  故障從哪里來    1
1.1  我的程序罷工了    1
1.2  從缺陷到故障    3
1.3  迷失在時(shí)空之中    5
1.4  從故障到修正    9
1.5  自動(dòng)調(diào)試技術(shù)    14
1.6  BUG、失誤、
1.6  還是缺陷?    18
1.7  概念    20
1.8  工具    21
1.9  進(jìn)一步閱讀指南    22
1.10  習(xí)題    23
第2章  跟蹤問題    25
2.1  啊!這么多問題    25
2.2  報(bào)告問題    26
2.3  管理問題    29
2.4  問題分類    31
2.4.1  嚴(yán)重程度    31
2.4.2  優(yōu)先級    32
2.4.3  標(biāo)識(shí)    32
2.4.4  注釋    32
2.4.5  通知    32
2.5  處理問題    32
2.6  管理問題跟蹤過程    35
2.7  把需求看作問題    36
2.8  管理重復(fù)問題    37
2.9  關(guān)聯(lián)問題和修正    39
2.10  關(guān)聯(lián)問題和測試    41
2.11  概念    43
2.12  工具    44
2.13  進(jìn)一步閱讀指南    45
2.14  習(xí)題    46
第3章  讓程序出錯(cuò)    48
3.1  調(diào)試測試    48
3.2  控制程序    50
3.3  在表現(xiàn)層測試    52
3.3.1  低級交互    52
3.3.2  系統(tǒng)級交互    54
3.3.3  高級交互    55
3.3.4  評估測試結(jié)果    56
3.4  在功能層測試    57
3.5  在單元層測試    59
3.6  分離單元    63
3.7  為調(diào)試而設(shè)計(jì)    66
3.8  預(yù)防未知問題    69
3.9  概念    70
3.10  工具    71
3.11  進(jìn)一步閱讀指南    72
3.12  習(xí)題    73
第4章  重現(xiàn)問題    75
4.1  調(diào)試過程的第一步    75
4.2  重現(xiàn)問題環(huán)境    76
4.3  重現(xiàn)程序運(yùn)行過程    78
4.3.1  重現(xiàn)數(shù)據(jù)    80
4.3.2  重現(xiàn)用戶交互    81
4.3.3  重現(xiàn)通信    83
4.3.4  重現(xiàn)時(shí)間    83
4.3.5  重現(xiàn)隨機(jī)性    84
4.3.6  重現(xiàn)操作環(huán)境    85
4.3.7  重現(xiàn)調(diào)度    87
4.3.8  物理影響    89
4.3.9  調(diào)試工具的影響    90
4.4  重現(xiàn)系統(tǒng)交互    92
4.5  專注于單元    92
4.5.1  創(chuàng)建一個(gè)控制層    93
4.5.2  單元控制舉例    94
4.5.3  偽對象    96
4.5.4  控制更多的交互    98
4.6  概念    99
4.7  工具    100
4.8  進(jìn)一步閱讀指南    100
4.9  習(xí)題    101
第5章  簡化問題    103
5.1  簡化問題    103
5.2  GECKO BUG馬拉松    104
5.3  手工簡化    107
5.4  自動(dòng)簡化    109
5.5  簡化算法    111
5.6  簡化用戶交互    117
5.7  簡化隨機(jī)輸入    118
5.8  快速簡化    119
5.8.1  緩存    120
5.8.2  盡早結(jié)束    120
5.8.3  語法簡化    121
5.8.4  分離差別,而不是
5.8.4  環(huán)境因素    122
5.9  概念    123
5.10  工具    124
5.11  進(jìn)一步閱讀指南    124
5.12  習(xí)題    125
第6章  科學(xué)調(diào)試    128
6.1  如何成為一個(gè)
6.1  調(diào)試專家    128
6.2  科學(xué)方法    129
6.3  應(yīng)用科學(xué)方法    130
6.3.1  調(diào)試sample—準(zhǔn)備    130
6.3.2  調(diào)試sample—假設(shè)1    132
6.3.3  調(diào)試sample—假設(shè)2    132
6.3.4  調(diào)試sample—假設(shè)3    132
6.3.5  調(diào)試sample—假設(shè)4    133
6.4  明確調(diào)試    134
6.5  記錄日志    135
6.6  快速而雜亂的調(diào)試    136
6.7  算法調(diào)試    137
6.8  構(gòu)造假設(shè)    140
6.9  程序推理技術(shù)    142
6.10  概念    144
6.11  進(jìn)一步閱讀指南    145
6.12  習(xí)題    146
第7章  推演錯(cuò)誤    148
7.1  分離取值的來源    148
7.2  理解控制流    149
7.3  跟蹤依賴關(guān)系    153
7.3.1  語句的效果    153
7.3.2  被影響語句    154
7.3.3  語句依賴關(guān)系    155
7.3.4  跟蹤依賴關(guān)系    156
7.3.5  利用依賴關(guān)系    158
7.4  程序切片    159
7.4.1  前向片斷    159
7.4.2  后向片斷    159
7.4.3  片斷運(yùn)算    160
7.4.4  利用片斷    162
7.4.5  可運(yùn)行片斷    162
7.5  推演代碼的壞味道    163
7.6  靜態(tài)分析的局限性    168
7.7  概念    172
7.8  工具    172
7.9  進(jìn)一步閱讀指南    173
7.10  習(xí)題    174
第8章  觀察事實(shí)    177
8.1  觀察狀態(tài)    177
8.2  記錄運(yùn)行情況    178
8.2.1  日志記錄函數(shù)    180
8.2.2  日志記錄的框架    183
8.2.3  用方面記錄日志    186
8.2.4  在二進(jìn)制級別
8.2.4  記錄日志    189
8.3  使用調(diào)試器    192
8.3.1  調(diào)試會(huì)話    193
8.3.2  控制運(yùn)行過程    196
8.3.3  事后調(diào)試    197
8.3.4  記錄數(shù)據(jù)日志    198
8.3.5  調(diào)用函數(shù)    198
8.3.6  修正與繼續(xù)    199
8.3.7  嵌入式調(diào)試器    199
8.3.8  有關(guān)調(diào)試器的建議    200
8.4  查詢事件    201
8.4.1  監(jiān)視點(diǎn)    202
8.4.2  統(tǒng)一事件查詢    203
8.5  可視化顯示狀態(tài)    205
8.6  概念    207
8.7  工具    208
8.8  進(jìn)一步閱讀指南    209
8.9  習(xí)題    210
第9章  跟蹤錯(cuò)誤來源    216
9.1  回溯推理    216
9.2  探查運(yùn)行歷史    217
9.3  動(dòng)態(tài)切片    219
9.4  操作來源    222
9.5  捕獲錯(cuò)誤狀態(tài)    225
9.6  概念    226
9.7  工具    227
9.8  進(jìn)一步閱讀指南    227
9.9  習(xí)題    227
第10章  斷言預(yù)期結(jié)果    230
10.1  自動(dòng)觀察    230
10.2  基本斷言    232
10.3  斷言不變量    233
10.4  斷言正確性    237
10.5  作為規(guī)格說明的斷言    240
10.6  從斷言到驗(yàn)證    241
10.7  參考運(yùn)行過程    244
10.8  系統(tǒng)斷言    246
10.8.1  用MALLOC_CHECK
10.8.1  檢查堆    247
10.8.2  用ELECTRICFENCE
10.8.2  避免緩沖區(qū)溢出    248
10.8.3  用VALGRIND
10.8.3  檢測內(nèi)存錯(cuò)誤    248
10.8.4  語言擴(kuò)展    250
10.9  檢查產(chǎn)品代碼    252
10.10  概念    253
10.11  工具    254
10.12  進(jìn)一步閱讀指南    256
10.13  習(xí)題    258
第11章  檢測反常    263
11.1  捕捉正常行為    263
11.2  比較覆蓋情況    264
11.3  統(tǒng)計(jì)調(diào)試    269
11.4  從用戶環(huán)境中
11.4  收集數(shù)據(jù)    270
11.5  動(dòng)態(tài)不變量    272
11.6  運(yùn)行時(shí)的不變量    276
11.7  從反常定位缺陷    278
11.8  概念    278
11.9  工具    279
11.10  進(jìn)一步閱讀指南    280
11.11  習(xí)題    281
第12章  起因與結(jié)果    283
12.1  起因和參照世界    283
12.2  驗(yàn)證起因    285
12.3  因果關(guān)系實(shí)踐    285
12.4  尋找真實(shí)起因    288
12.5  縮小起因范圍    289
12.6  縮小差別舉例    289
12.7  公共環(huán)境    290
12.8  調(diào)試中的起因    291
12.9  概念    292
12.10  進(jìn)一步閱讀指南    292
12.11  習(xí)題    293
第13章  分離故障起因    296
13.1  自動(dòng)分離起因    296
13.2  分離和簡化    297
13.3  一種分離算法    299
13.4  實(shí)現(xiàn)分離    301
13.5  分離引發(fā)故障的輸入    304
13.6  分離引發(fā)故障的
13.6  調(diào)度過程    305
13.7  分離引發(fā)故障的變化    307
13.8  問題和局限性    313
13.9  概念    315
13.10  工具    316
13.11  進(jìn)一步閱讀指南    316
13.12  習(xí)題    317
第14章  分離因果鏈    319
14.1  無用起因    319
14.2  捕捉程序狀態(tài)    322
14.3  比較程序狀態(tài)    325
14.4  分離相關(guān)程序狀態(tài)    327
14.5  分離因果鏈    331
14.6  分離引發(fā)故障的代碼    336
14.7  問題和風(fēng)險(xiǎn)    340
14.8  概念    342
14.9  工具    343
14.10  進(jìn)一步閱讀指南    343
14.11  習(xí)題    344
第15章  修正缺陷    346
15.1  定位缺陷    346
15.2  重點(diǎn)關(guān)注最可能的
15.2  錯(cuò)誤    347
15.3  確認(rèn)缺陷    350
15.3.1  是這個(gè)錯(cuò)誤引發(fā)了
15.3.1  故障嗎?    350
15.3.2  該起因真是
15.3.2  錯(cuò)誤嗎?    351
15.3.3  先思考,后修正    353
15.4  修正缺陷    353
15.4.1  故障不再出現(xiàn)
15.4.1  了嗎?    353
15.4.2  修正會(huì)引入新
15.4.2  問題嗎?    354
15.4.3  同樣的差錯(cuò)會(huì)出現(xiàn)在
15.4.3  其他地方嗎?    355
15.4.4  我完成所有
15.4.4  工作了嗎?    355
15.5  變通方法    356
15.6  從差錯(cuò)中學(xué)習(xí)    357
15.7  概念    359
15.8  進(jìn)一步閱讀指南    360
15.9  習(xí)題    361
附錄A  規(guī)范定義    363
A.1  Delta調(diào)試    363
A.1.1  配置    363
A.1.2  成功與故障
A.1.2  運(yùn)行過程    363
A.1.3  測試    364
A.1.4  最小性    364
A.1.5  簡化    364
A.1.6  差別    365
A.1.7  分離    366
A.2  內(nèi)存狀態(tài)圖    366
A.2.1  規(guī)范結(jié)構(gòu)    366
A.2.2  展開數(shù)據(jù)結(jié)構(gòu)    368
A.2.3  匹配頂點(diǎn)與有
A.2.3  向邊    369
A.2.4  計(jì)算公共子圖    370
A.2.5  計(jì)算圖的差別    370
A.2.6  應(yīng)用部分狀態(tài)
A.2.6  變化    373
A.2.7  捕獲C狀態(tài)    373
A.3  因果鏈    375
術(shù)語表    378
參考文獻(xiàn)    382
索引    390
How To目錄
如何調(diào)試程序    20
如何組織調(diào)試過程    43
如何跟蹤需求    44
如何重新構(gòu)建發(fā)布的版本    44
如何關(guān)聯(lián)問題和修正    44
如何關(guān)聯(lián)問題和測試    44
如何進(jìn)行調(diào)試測試    71
如何自動(dòng)運(yùn)行程序    71
如何在表現(xiàn)層測試    71
如何在功能層測試    71
如何在單元層測試    71
如何分離單元    71
如何為調(diào)試而設(shè)計(jì)    71
如何預(yù)防未知問題    71
如何重現(xiàn)問題    99
如何重現(xiàn)問題環(huán)境    99
如何重現(xiàn)問題運(yùn)行過程    99
如何重現(xiàn)單元的行為    99
如何簡化測試用例    123
如何自動(dòng)簡化    123
如何加快自動(dòng)簡化的速度    124
如何分離故障起因    144
如何理解當(dāng)前的問題    145
如何避免沒完沒了的調(diào)試過程    145
如何在某個(gè)函數(shù)或邏輯式程序中定位錯(cuò)誤    145
如何快速而雜亂地調(diào)試程序    145
如何構(gòu)造假設(shè)    145
如何基于程序進(jìn)行推理    145
如何分離取值來源    172
如何進(jìn)行程序切片    172
如何觀察程序狀態(tài)    207
如何封裝和重用調(diào)試代碼    207
如何觀察崩潰程序的最后狀態(tài)    207
如何探查程序運(yùn)行歷史    226
如何分離某一次特定運(yùn)行過程中的取值來源    226
如何捕獲錯(cuò)誤狀態(tài)    226
如何進(jìn)行自動(dòng)觀察    253
如何使用斷言    253
如何把程序與參考程序進(jìn)行比較    254
如何確保內(nèi)存的完整性    254
如何預(yù)防低級別語言的內(nèi)存錯(cuò)誤    254
如何確定反常行為    279
如何概括行為    279
如何檢測反常    279
如何比較覆蓋情況    279
如何對返回值進(jìn)行采樣    279
如何收集用戶環(huán)境中的數(shù)據(jù)    279
如何確定不變量    279
如何證實(shí)因果關(guān)系    292
如何尋找起因    292
如何尋找真實(shí)起因    292
如何自動(dòng)分離故障起因    315
如何分離輸入中的故障起因    315
如何分離線程調(diào)度中的故障起因    315
如何分離引發(fā)故障的代碼變化    315
如何理解故障在運(yùn)行過程中的傳播過程    342
如何捕捉程序狀態(tài)    342
如何比較程序狀態(tài)    342
如何分離引發(fā)故障的程序狀態(tài)    342
如何尋找引發(fā)故障的代碼    343
如何沿著因果鏈縮小缺陷的范圍    343
如何分離感染鏈    359
如何尋找最可能的來源    359
如何修正缺陷    360
如何確保修正是正確的    360
如何避免引入新問題    360
如何從錯(cuò)誤中學(xué)習(xí)    360


本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號