出版時間:2011-6 出版社:人民郵電出版社 作者:Paul Butcher 頁數(shù):158 譯者:曹玉琳
Tag標(biāo)簽:無
內(nèi)容概要
調(diào)試對軟件開發(fā)至關(guān)重要。然而,即使對于有經(jīng)驗的程序員,調(diào)試也決非易事。
本書是一部優(yōu)秀的軟件調(diào)試實戰(zhàn)指南,作者總結(jié)了自己和身邊同事多年的經(jīng)驗教訓(xùn),詳細(xì)闡述了調(diào)試的方方面面。書中內(nèi)容共分為三大部分。第一部分借助軟件特有的功能展示缺陷是怎么產(chǎn)生的,介紹了建立在實證方法之上的核心調(diào)試方法;第二部分闡述怎樣發(fā)現(xiàn)代碼中存在需要修復(fù)的問題,以及如何將調(diào)試融入到整個軟件開發(fā)過程中去;第三部分討論如何避免一些常見的缺陷。
本書秉承了Pragmatic圖書簡潔實用的風(fēng)格,總結(jié)了大量方法與經(jīng)驗,適合軟件開發(fā)人員、調(diào)試人員閱讀并迅速付諸實踐。
作者簡介
Paul Butcher
資深程序員,涉獵廣泛,從單片機編碼到高級聲明式編程無所不精。Paul是一位少年天才,8歲時就已經(jīng)開始在8位機上編寫游戲。最近幾年他開始癡迷于賽車,認(rèn)為自己是可以和漢密爾頓比肩的賽車手。
書籍目錄
第一部分 問題的核心
第1章 山重水復(fù)疑無路
1.1 調(diào)試不僅是排除缺陷
1.2 實證方法
1.3 核心調(diào)試過程
1.4 先澄清幾個問題
1.4.1 你知道要找的是什么嗎
1.4.2 一次一個問題
1.4.3 先檢查簡單的事情
1.5 付諸行動
第2章 重現(xiàn)問題
2.1 重現(xiàn)第一,提問第二
2.1.1 明確開始要做的事
2.1.2 抓住重點
2.2 控制軟件
2.3 控制環(huán)境
2.4 控制輸入
2.4.1 推測可能的輸入
2.4.2 記錄輸入值
2.4.3 負(fù)載和壓力
2.5 改進(jìn)問題重現(xiàn)
2.5.1 最小化反饋周期
2.5.2 將不確定的缺陷變?yōu)榇_定的
2.5.3 自動化
2.5.4 迭代
2.6 如果真的不能重現(xiàn)問題該怎么辦
2.6.1 缺陷真的存在嗎
2.6.2 在相同的區(qū)域解決不同的問題
2.6.3 讓其他人參與其中
2.6.4 充分利用用戶群體
2.6.5 推測法
2.7 付諸行動
第3章 診斷
3.1 不要急于動手——試試科學(xué)的方法
3.2 相關(guān)策略
3.2.1 插樁
3.2.2 分而治之
3.2.3 利用源代碼控制工具
3.2.4 聚焦差異
3.2.5 向他人學(xué)習(xí)
3.2.6 奧卡姆的剃刀
3.3 調(diào)試器
3.4 陷阱
3.4.1 你做的修改是正確的嗎
3.4.2 驗證假設(shè)
3.4.3 多重原因
3.4.4 流沙
3.5 思維游戲
3.5.1 旁觀調(diào)試法
3.5.2 角色扮演
3.5.3 換換腦筋
3.5.4 做些改變,什么改變都行
3.5.5 福爾摩斯原則
3.5.6 堅持
3.6 驗證診斷
3.7 付諸行動
第4章 修復(fù)缺陷
4.1 清除障礙
4.2 測試
4.3 修復(fù)問題產(chǎn)生的原因,而非修復(fù)現(xiàn)
4.4 重構(gòu)
4.5 簽入
4.6 審查代碼
4.7 付諸行動
第5章 反思
5.1 這到底是怎么搞的
5.2 哪里出了問題
5.2.1 我們已經(jīng)做到了嗎
5.2.2 根本原因分析
5.3 它不會再發(fā)生了
5.3.1 自動驗證
5.3.2 重構(gòu)
5.3.3 過程
5.4 關(guān)閉循環(huán)
5.5 付諸行動
第二部分 從大局看調(diào)試
第6章 發(fā)現(xiàn)代碼存在問題
6.1 追蹤缺陷
6.1.1 缺陷追蹤系統(tǒng)
6.1.2 怎樣才能寫出一份出色的缺陷報告
6.1.3 環(huán)境和配置報告
6.2 與用戶合作
6.2.1 簡化流程
6.2.2 有效的溝通
6.3 與支持人員協(xié)同工作
6.4 付諸行動
第7章 務(wù)實的零容忍策略
7.1 缺陷優(yōu)先
7.1.1 早期缺陷修復(fù)可以大大降低軟件運行的不確定性
7.1.2 沒有破窗戶
7.2 調(diào)試的思維模式
7.3 自己來解決質(zhì)量問題
7.3.1 這里沒有“靈丹妙藥”
7.3.2 停止開發(fā)那些有缺陷的程序
7.3.3 從“不干凈”的代碼中將“干凈”的代碼分離出來
7.3.4 錯誤分類
7.3.5 缺陷閃電戰(zhàn)
7.3.6 專項小組
7.4 付諸行動
第三部分 深入調(diào)試技術(shù)
第8章 特殊案例
8.1 修補已經(jīng)發(fā)布的軟件
8.2 向后兼容
8.2.1 確定你的代碼有問題
8.2.2 解決兼容性問題
8.3 并發(fā)
8.3.1 簡單與控制
8.3.2 修復(fù)并發(fā)缺陷
8.4 海森堡缺陷
8.5 性能缺陷
8.5.1 尋找瓶頸
8.5.2 準(zhǔn)確的性能分析
8.6 嵌 入式軟件
8.6.1 嵌入式調(diào)試工具
8.6.2 提取信息的痛苦路程
8.7 第三方軟件的缺陷
8.7.1 不要太快去指責(zé)
8.7.2 處理第三方代碼的缺陷
8.7.3 開源代碼
8.8 付諸行動
第9章 理想的調(diào)試環(huán)境
9.1 自動化測試
9.1.1 有效的自動化測試
9.1.2 自動化測試可以作為調(diào)試的輔助
9.1.3 模擬測試、樁測試以及其他的代替測試技術(shù)
9.2 源程序控制
9.2.1 穩(wěn)定性
9.2.2 可維護性
9.2.3 與分支相關(guān)的問題
9.2.4 控制分支
9.3 自動構(gòu)建
9.3.1 一鍵構(gòu)建
9.3.2 構(gòu)建機器
9.3.3 持續(xù)集成
9.3.4 創(chuàng)建版本
9.3.5 靜態(tài)分析
9.3.6 使用靜態(tài)分析
9.4 付諸行動
第10章 讓軟件學(xué)會自己尋找缺陷
10.1 假設(shè)和斷言
10.1.1 一個例子
10.1.2 等一下——剛才發(fā)生了什么
10.1.3 例子,第二幕
10.1.4 契約,先決條件,后置條件和不變量
10.1.5 開啟或關(guān)閉斷言
10.1.6 防錯性程序設(shè)計
10.1.7 斷言濫用
10.2 調(diào)試版本
10.2.1 編譯器選項
10.2.2 調(diào)試子系統(tǒng)
10.2.3 內(nèi)置控制
10.3 資源泄漏和異常處理
10.3.1 在測試中自動拋出異常
10.3.2 一個例子
10.3.3 測試框架
10.4 付諸行動
第11章 反模式
11.1 夸大優(yōu)先級
11.2 超級巨星
11.3 維護團隊
11.4 救火模式
11.5 重寫
11.6 沒有代碼所有權(quán)
11.7 魔法
11.8 付諸行動
附錄A 資源
附錄B 參考書目
章節(jié)摘錄
第1章 山重水復(fù)疑無路 如果你的軟件不能正常工作,該怎么做呢? 一些開發(fā)人員似乎有竅門能夠準(zhǔn)確無誤地找出發(fā)生缺陷的根本原因,而另一些開發(fā)人員似乎總在漫無目的地尋找原因卻得不到確切的結(jié)果。是什么使他們之間存在著這樣的差異呢? 在這一章中,我們將仔細(xì)探究一種調(diào)試方法,這種方法在專業(yè)的軟件開發(fā)中已經(jīng)被反復(fù)證實。它絕非靈丹妙藥,它仍然依賴于調(diào)試者的智慧、直覺、探查缺陷的技巧,甚至一點兒運氣。但是,它會使你的努力更加有效,避免做無用功,并且能夠盡快地找到問題的核心?! 【唧w來說,我們將介紹以下內(nèi)容: 調(diào)試與排除缺陷的區(qū)別; 實證方法——借助軟件本身來告訴你現(xiàn)在的運行狀態(tài); 核心調(diào)試過程(問題重現(xiàn),問題診斷,缺陷修復(fù),反思); 做最先應(yīng)該做的事——在深入調(diào)試之前應(yīng)該先考慮的事情?! ?.1 調(diào)試不僅是排除缺陷 試問一個沒有經(jīng)驗的程序員什么是調(diào)試,他可能回答調(diào)試就是“找到一種修復(fù)缺陷的方法”。事實上,這僅僅是調(diào)試諸多目標(biāo)中的一個,甚至不是最重要的目標(biāo)。 有效的調(diào)試需要采取以下步驟?! 。?) 弄清楚軟件為什么會運行失常?! 。?) 修復(fù)這一問題?! 。?) 避免破壞其他部分。 ?。?) 保持或者提高代碼的總體質(zhì)量(可讀性、架構(gòu)、測試覆蓋率、性能等)?! 。?) 確保同樣的問題不會在其他地方發(fā)生,也不會再次發(fā)生。 其中,目前最重要的是首先查明問題的根本原因,這是一切事情的基礎(chǔ)。 理解萬歲 一些沒有經(jīng)驗的開發(fā)人員(遺憾的是,有時就是我們中本應(yīng)知道得更多的那些人)經(jīng)常完全忽略問題診斷這一過程,而是往往立即采取他們認(rèn)為能夠修復(fù)程序的措施。如果他們走運,只是修改了的程序運行不了,他們所做的一切是在浪費時間而已。真正的危險是修改了的程序可以運行,或者看來可以運行,因為這時開發(fā)人員在一知半解的情況下改變了源程序。他或許修復(fù)了缺陷,但是實際上很可能掩蓋了潛在的根本原因。更糟糕的是,這種改變可能會導(dǎo)致新問題——破壞一些曾經(jīng)可以正確運行的程序?! ?hellip;…
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載