日臻完善:軟體調試與最佳化典型套用

日臻完善:軟體調試與最佳化典型套用

《日臻完善軟體調試與最佳化典型套用》是2010年中國鐵道出版社出版的圖書。《日臻完善:軟體調試與最佳化典型套用》在介紹相關內容時,通過實例闡述使晦澀的理論知識變得生動易懂。實例中的代碼都是在Visual C++ 6.0開發環境中編寫的,但調試理念和思想與軟體開發環境無關,只是調試工具的操作細節不同。

基本介紹

  • 書名:日臻完善:軟體調試與最佳化典型套用
  • 頁數:385頁
  • 出版社:中國鐵道出版社
  • 出版時間:2010年1月1日
圖書信息,內容簡介,目錄,

圖書信息

正文語種: 簡體中文
開本: 16
ISBN: 9787113107192
條形碼: 9787113107192
尺寸: 23 x 20.4 x 2.2 cm
重量: 1.1 Kg

內容簡介

《日臻完善:軟體調試與最佳化典型套用》以軟體開發過程的全局來介紹軟體調試,涉及編碼過程的規範、測試用例的編寫、事後調試、缺陷管理等多個開發環節的內容,介紹了各種常用開發技術的調試方法,包括靜態程式庫調試、動態程式庫調試、多執行緒調試、記憶體泄漏、核心對象泄漏等。
《日臻完善:軟體調試與最佳化典型套用》主要面向軟體程式編碼人員、程式測試人員等軟體領域的技術從業人員,同時軟體開發管理人員也可從《日臻完善:軟體調試與最佳化典型套用》中了解到軟體缺陷管理方面的內容。

目錄

第1章 緒論 1
1.1 不可避免的調試工作 1
1.1.1 不存在完美的程式 2
1.1.2 系統經常不按期望運行 2
1.1.3 成本極高的調試過程 3
1.1.4 調試與測試 4
1.2 掌握調試 5
1.2.1 在編碼過程中簡化調試 5
1.2.2 軟體問題分類 6
1.2.3 熟練使用工具 7
1.3 輕鬆調試的必備條件 8
1.3.1 減少調試時間 8
1.3.2 徹底解決每個錯誤 9
1.3.3 軟體修改時的保守策略 10
第2章 編寫良好的代碼 11
2.1 代碼編寫規範 12
2.1.1 代碼要求 12
2.1.2 命名規範 14
2.1.3 注釋規範 19
2.2 靜態代碼檢查 29
2.2.1 PCLINT簡介 30
2.2.2 PCLINT安裝 31
2.2.3 PCLINT集成 39
2.2.4 PCLINT代碼檢查 42
2.2.5 PCLINT選項 43
2.3 重構 46
2.3.1 重構概述 46
2.3.2 重構的關鍵問題 48
2.4 代碼結構分析 51
2.4.1 進行代碼分析 52
2.4.2 獲取逆向工程模型 58
2.5 測試代碼 60
2.5.1 測試用例設計 60
2.5.2 易測試性 61
2.5.3 編寫自動測試代碼前的準備 63
2.5.4 自動測試 63
2.5.5 代碼覆蓋原則 66
2.5.6 代碼覆蓋率評估 66
第3章 Visual C++調試基礎 69
3.1 Visual C++調試工具 69
3.1.1 調試環境的建立 69
3.1.2 調試的一般過程 71
3.1.3 斷點的設定 71
3.1.4 控制程式的運行 78
3.1.5 查看工具的使用 80
3.2 使用跟蹤語句 84
3.2.1 跟蹤語句的定義 85
3.2.2 TRACE宏的使用 86
3.2.3 Dump函式的使用 88
3.2.4 其他跟蹤語句的使用 89
3.3 使用斷言 91
3.3.1 斷言的定義 91
3.3.2 ANSI C斷言 92
3.3.3 C運行時刻函式館斷言 93
3.3.4 MFC斷言 94
3.3.5 使用斷言的地方 96
3.4 工程選項 97
3.4.1 編譯選項 97
3.4.2 連結選項 98
3.4.3 最佳化選項 99
3.5 調試版本和發布版本 100
3.5.1 生成調試版本和發布版本 100
3.5.2 調試版本和發布版本的區別 102
3.6 調試發布版本 103
3.7 符號檔案 106
3.7.1 符號檔案的定義 106
3.7.2 生成和使用PDB檔案 107
3.8 使用預處理指令 109
3.8.1 #pragma 110
3.8.2 #error 114
第4章 庫調試 115
4.1 運行庫概述 115
4.1.1 靜態程式庫 116
4.1.2 動態程式庫 116
4.2 創建程式庫 117
4.2.1 創建靜態程式庫 118
4.2.2 創建動態程式庫 121
4.3 調試靜態程式庫 130
4.3.1 靜態連線庫的使用 130
4.3.2 靜態程式庫的調試 131
4.3.3 常見問題及處理方法 135
4.4 調試動態程式庫 135
4.4.1 動態程式庫的使用 135
4.4.2 DLL衝突 136
4.4.3 獲取DLL的相關信息 137
4.4.4 列舉程式載入的模組 140
第5章 多執行緒程式調試 144
5.1 多執行緒概述 144
5.1.1 進程和執行緒 144
5.1.2 Win32 API對多執行緒編程的支持 145
5.2 執行緒的同步與互斥 149
5.2.1 等待函式 149
5.2.2 信號量 151
5.2.3 事件 153
5.2.4 臨界區 156
5.2.5 死鎖問題 159
5.3 多執行緒下記憶體操作 160
5.3.1 問題引出 161
5.3.2 最佳化方法 162
5.4 編寫安全的執行緒代碼 163
5.4.1 減少競爭 163
5.4.2 防止死鎖 164
5.4.3 安全地終止執行緒 166
5.5 調試方法 171
5.5.1 獲取執行緒信息 171
5.5.2 運行日誌 174
5.5.3 設定特定斷點 175
5.5.4 控制執行緒狀態 177
5.5.5 儘早調試發布版本 178
第6章 SQL調試 179
6.1 SQL概述 179
6.1.1 數據定義語言 180
6.1.2 數據操作語言 181
6.1.3 SELECT表達式 183
6.1.4 SQL中的數據類型 184
6.2 資料庫開發 186
6.2.1 開放資料庫連線 187
6.2.2 MFC ODBC類 188
6.2.3 MFC DAO編程 189
6.2.4 OLE DB框架 190
6.2.5 ActiveX數據對象 191
6.3 編寫良好的SQL語句 192
6.3.1 SQL語句最佳化 192
6.3.2 SQL編寫建議 196
6.4 資料庫性能調試 198
6.5 資料庫結構分析 203
第7章 程式錯誤 206
7.1 程式錯誤類型 206
7.1.1 語法錯誤 207
7.1.2 連線錯誤 210
7.1.3 運行錯誤 212
7.1.4 邏輯錯誤 213
7.2 防禦性編程 214
7.2.1 在非法輸入中保護程式 214
7.2.2 使用斷言 214
7.2.3 錯誤處理技術 217
7.3 查看錯誤 218
第8章 記憶體漏洞及調試 220
8.1 記憶體分配 220
8.1.1 記憶體分配函式 220
8.1.2 C++的new和delete操作符 223
8.2 記憶體泄漏 224
8.2.1 記憶體泄漏的定義 225
8.2.2 泄漏的分類與表現 225
8.3 記憶體泄漏調試 228
8.3.1 調試手段 228
8.3.2 記憶體泄漏的跟蹤與檢測 235
8.3.3 記憶體泄漏的防範 239
8.4 記憶體破壞調試 242
8.4.1 訪問空指針 242
8.4.2 訪問未被初始化的記憶體 243
8.4.3 記憶體越界 244
8.4.4 訪問已經被釋放的記憶體 244
8.4.5 釋放未被初始化的指針 245
8.5 記憶體漏洞檢查 246
第9章 核心對象泄漏及調試 249
9.1 句柄 249
9.1.1 句柄的定義 250
9.1.2 對象句柄的繼承 251
9.2 核心對象 255
9.2.1 核心對象的定義 255
9.2.2 核心對象的創建 256
9.2.3 核心對象的銷毀 258
9.2.4 核心對象的計數 259
9.2.5 核心對象的安全性 260
9.2.6 核心對象的共享 261
9.3 句柄泄漏 268
9.4 檢測資源泄漏 269
9.4.1 使用任務管理器 269
9.4.2 使用WinDbg 270
9.5 GDI資源泄漏 272
第10章 結構異常處理 274
10.1 異常概述 274
10.2 Windows結構異常處理 277
10.2.1 結束異常程式 278
10.2.2 異常處理程式 285
10.2.3 異常過濾器 286
10.2.4 未處理異常 288
10.3 C++結構異常處理 290
10.3.1 C++異常處理的語法 290
10.3.2 C++異常處理機制 292
10.3.3 使用異常規格編程 294
10.3.4 將結構化異常轉換為C++異常 301
10.4 Visual C++中的結構異常處理 305
10.4.1 中斷處理句柄 305
10.4.2 異常處理句柄 316
第11章 事後調試 323
11.1 系統API錯誤碼 323
11.1.1 使用GetLastError 324
11.1.2 獲取錯誤碼的字元串信息 326
11.2 彙編信息 330
11.2.1 彙編語言基礎 330
11.2.2 執行緒堆疊 335
11.2.3 函式調用規範 337
11.2.4 使用反彙編 343
11.3 使用崩潰對話框 344
11.4 使用MAP檔案 346
11.4.1 MAP檔案構成 347
11.4.2 導致崩潰的代碼行 348
11.5 使用Dr. Watson 351
11.5.1 Dr. Watson工具簡介 351
11.5.2 Dr. Watson的使用 356
第12章 軟體缺陷管理 364
12.1 軟體缺陷概述 364
12.1.1 軟體缺陷的定義 364
12.1.2 缺陷管理的目標 365
12.2 軟體缺陷收集 366
12.2.1 軟體缺陷描述 366
12.2.2 軟體缺陷報告 367
12.3 軟體缺陷管理方法 369
12.3.1 缺陷管理流程 369
12.3.2 缺陷跟蹤管理系統 372
附錄 374
附錄A Visual C++環境下的常見問題 374
附錄B 動態程式庫def檔案語法規則 380

相關詞條

熱門詞條

聯絡我們