新到貨2本75折
軟件驅魔:調試和優化遺留代碼的藝術

軟件驅魔:調試和優化遺留代碼的藝術

  • 定價:354
  • 優惠價:87308
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書是遺留代碼調試和優化領域的代表性著作,是作者10多年來在軟件bug中「驅魔」經驗的結晶,Amazon五星評論。不僅從實用性角度深入、系統地講解了調試和優化遺留代碼的方法、技術和最佳實踐,而且從源頭上闡述如何避免掉進維護遺留代碼的泥潭,編寫出易於維護,甚至不需要維護的高質量代碼。

本書共分7章:第1章介紹用於構建易於修改和調試的軟件的相關技術;第2章講解如何定位和消除軟件bug;第3章提供理解問題以及程序的有用方法;第4章講述調試器在計算機內部的工作原理;第5章深入探討優化內存的相關技術和方法;第6章則探討如何從CPU運行效率的角度優化代碼的經驗和技術;第7章結合社會和環境因素給出一些寶貴的建議。

Bill Blunden,擁有康奈爾大學物理學學士學位和凱斯西儲大學運籌學碩士學位。資深系統維護專家,從事相關工作10余年,對系統軟件的維護、遺留代碼的調試和優化有非常深入的研究。活躍於計算機安全類社區,常與計算機安全領域多名世界級安全專家交流探討。
 

目錄

譯者序
前言

第1章 預防藥 1
1.1 核心問題 2
1.1.1 上市時間的壓力 2
1.1.2 不確定的規格說明 4
1.1.3 以功能特性換時間 5
1.1.4 寫下來 5
1.1.5 復雜性 8
1.2 防御性編程 9
1.2.1 內聚和耦合 9
1.2.2 錯誤輸入檢查 12
1.2.3 數據范圍 18
1.2.4 日志 20
1.2.5 文檔 28
1.2.6 為改變而設計 31
1.2.7 增量精煉 33
1.3 單元測試 34
1.3.1 自動化測試的動機 35
1.3.2 實現框架的步驟 36
1.3.3 框架擴展 43
1.4 工具的配置 46
1.4.1 使用編譯器警告 46
1.4.2 發行版本的設置 47
1.5 機器相關性 48
1.5.1 字節序 49
1.5.2 內存對齊 50
1.5.3 數據類型大小 51
1.5.4 虛擬機的好處 52
1.6 小結 53
1.6.1 底線:為什麼出現bug 54
1.6.2 改進清單:bug主動預防 54

第2章 調試技巧 55
2.1 初始步驟 56
2.1.1 復現問題 56
2.1.2 無法復現的問題 56
2.1.3 驗證bug是真實存在的 59
2.2 消除缺陷:快速修復 60
2.2.1 檢查近期改動 60
2.2.2 使用跟蹤信息 61
2.2.3 似曾相識 61
2.2.4 明確何時放棄 61
2.3 消除缺陷:科學方法論 62
2.3.1 一般步驟 62
2.3.2 定位問題:增量集成法 63
2.3.3 定位問題:二分法 64
2.3.4 理解問題 64
2.3.5 防范失誤 65
2.3.6 診斷工具 67
2.3.7 基礎調試操作 75
2.4 保留記錄 80
2.4.1 個人記錄 80
2.4.2 協同開發下的記錄 81
2.5 小結 84

第3章 理解問題 86
3.1 知識是如何丟失的 87
3.1.1 競爭 87
3.1.2 人員流失 89
3.1.3 升職 90
3.2 難懂的代碼 91
3.2.1 設計問題 91
3.2.2 混淆 95
3.2.3 誤導性的代碼 104
3.3 反向工程 105
3.3.1 通用策略 105
3.3.2 對策 111
3.3.3 建立知識庫 116
3.4 小結 118

第4章 調試器內部機制 119
4.1 調試器的種類 119
4.1.1 機器調試器與符號調試器 119
4.1.2 調試基礎:自定義構建 125
4.1.3 調試基礎:系統調用 136
4.1.4 調試基礎:解釋器 151
4.1.5 內核調試器 155
4.1.6 界面:命令行與圖形用戶界面 157
4.2 符號調試器擴展 157
4.2.1 動態斷點 157
4.2.2 單步執行 158
4.3 應對策略 159
4.3.1 系統調用 159
4.3.2 移除調試信息 160
4.3.3 代碼鹽 161
4.3.4 混合內存模型 162
4.4 小結 163

第5章 優化:內存占用 165
5.1 被遺忘的歷史 167
5.2 程序的內存布局 168
5.2.1 場景:單段程序 169
5.2.2 場景:僅代碼段和數據段 170
5.2.3 場景:所有4種段類型 171
5.3 代碼段 172
5.3.1 剪切粘貼式編程 172
5.3.2 宏 175
5.3.3 僵屍代碼 177
5.4 數據段 177
5.4.1 雙重用途的數據結構 178
5.4.2 位域 180
5.4.3 壓縮算法 181
5.5 棧 183
5.5.1 活動記錄 184
5.5.2 函數參數 188
5.5.3 局部變量 190
5.6 堆 191
5.6.1 內存池 192
5.6.2 回收 196
5.6.3 延遲實例化 197
5.6.4 跟蹤內存使用情況 199
5.7 小結 201

第6章 優化:CPU周期 202
6.1 程序控制跳轉 203
6.1.1 標簽與GOTO 203
6.1.2 函數參數 205
6.1.3 帶可變參數的函數 206
6.1.4 系統調用 207
6.1.5 遞歸 210
6.2 程序控制分支 211
6.2.1 查找表 211
6.2.2 switch與if-else 213
6.2.3 常見情況放在前,罕見情況放在后 215
6.3 程序控制循環 215
6.3.1 循環不變量 216
6.3.2 函數調用 217
6.3.3 數組引用 219
6.3.4 分解復合布爾表達式 220
6.3.5 循環展開 221
6.3.6 循環干涉 221
6.3.7 提取程序分支語句 221
6.4 內存管理 222
6.4.1 處理開銷 223
6.4.2 引用局部性 226
6.5 輸入/輸出 227
6.5.1 緩存 228
6.5.2 緩沖 229
6.5.3 先進的技術 230
6.6 異常 231
6.6.1 動態注冊模型 234
6.6.2 靜態表模型 235
6.6.3 處理開銷 235
6.6.4 濫用異常 237
6.7 昂貴的操作 237
6.7.1 消除常見的子表達式 237
6.7.2 浮點運算神話 237
6.7.3 強度折減 239
6.7.4 同步 240
6.7.5 簡寫操作符的神話 243
6.8 快速修復 243
6.8.1 更好的硬件 243
6.8.2 約束問題 244
6.8.3 編譯器設置 244
6.9 小結 245
6.10 信息匯總 246

第7章 最后的贈言 247
7.1 對於源代碼完整性的其他威脅 248
7.1.1 時髦技術:一個案例研究 248
7.1.2 洗腦101 249
7.1.3 真正的問題 249
7.2 保持書面記錄 250
7.2.1 悄悄記錄 250
7.2.2 隱私的神話 250
7.3 歷史總是重演 251
 

詳細資料

  • ISBN:9787111462842
  • 規格:253頁 / 21 x 14.8 x 1.5 cm / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【其他】2024采實電子書全書系:春暖花開‧享閱讀,參展書單書85折起、任選3本79折
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折