內容介紹
本書作為有關 Visual C++ Debugger的專著,是一本非常難得的好書。書中深入地分析了開發不包含邏輯和語法錯誤的代碼技巧以及調試程式的基本原理,介紹了開發和調試命令行代碼的過程和方法,說明了關於定位、分析及修復編程錯誤的方法,介紹了開發 Visual C++程式時所遇到的特殊調試問題。本書是所有軟體工程師的必讀書籍,也可作為大專院校師生的參考資料。
作品目錄
第一部分 代碼開發技巧第1章 編寫好的代碼.
l.l 誰需要本書?
l.2 教學方法
1.3 從何處開始閱讀?
1.4 警告!並非所有的C/C++編譯器都完全相同
1.5 語言無關的設計工具101
1.5.l 準備
1.5.2 模型!
l.5.3 結構圖、偽代碼及IPO框圖
l.6 好的程式設計的五點要素
1.7 規則意味著可以打破
1.7.1 安塞爾亞當斯(Ansel Adams)或畢卡索(Picasso)
1.7.2 注釋塊
1.7.3 標識符:identifiers、IDENTIFIERS和Identifiers
1.7.4 間隔與縮進
1.8 數據類型
1.9 匈牙利表示法
l.9.1 MFC、句柄、控制項及結構的命名規範
1.9.2 一般前綴命名規範
1.9.3 變數命名規範
1.9.4 應用程式符號命名規範
1.9.5 Microsoft MFC宏命名規範
1.9.6 庫標識符命名規範
1.9.7 靜態庫版本命名規範
1.9.8 動態連線庫命名規範
1.9.9 windows.h命名規範
1.10 操作符優先權
1.11 小結
第2章 使用編譯器憂化
2.l 編碼的責任與編譯器的最佳化
2.2 Microsoft Visual C++的最佳化
2.2.1 調度指令
2.2.2 函式級連線
2.2.3 字元串池
2.2.4 使用register鍵字
2.2.5 常量和複製的傳播
2.2.6 消除死代碼和死存儲
2.2.7 刪除冗餘於表達式
2.2.8 最佳化循環
2.2.9 降低強度
2.2.10 inline鍵字的使用
2.2.11 省略幀指針
2.2.12 關閉堆疊檢查
2.2.13 覆蓋堆疊
2.2.14 函式調用之間允許使用別名
2.2.15 全局最佳化
2.2.16 產生內部函式的內聯
2.2.17 最佳化math.h
2.3 Microsoft C++的最佳化開關
2.4 使用 Microsoft Visual Studio設定編譯器選項
2.4.1 Project Settings對話框中的 General類型
2.4.2 Project Settings對話框中的 Code Generation類型
2.4.3 選擇結構對齊方式
2.4.4 Project Settings對話框中的 Customize類型
2.4.5 Project Settings對話框中的 Optimizations類型
2.5 建立發行版本的建議
2.6 小結
第3章 邏輯與語法錯誤
3.l 好的調試策略
3.2 四種程式錯誤類型
3.2.l 語法錯誤
3.2.2 連線錯誤
3.2.3 運行錯誤
3.2.4 邏輯錯誤
3.3 查看錯誤訊息
3.4 預防性維護
3.4.l 桌面檢查的含義
3.5 異常處理設計
3.6 “請多多支持”
3.7 Microsoft Visual C++的幫助
3.8 小結
第4章 debugger
4.l 確認Debugger可以使用
4.2 啟動Debugger
4.2.1 Step Into和Step Over的區別
4.2.2 Go
4.2.3 Run to Cursor
4.3 理解Debugger工具列圖示
4.3.1 Restart
4.3.2 Stop Debugging
4.3.3 Break Execution
4.3.4 Apply Code Changes、Edit and Continue
4.3.5 Show Next Statement
4.3.6 Step Into
4.3.7 Step Over
4.3.8 Step Out
4.3.9 Run to Cursor
4.3.10 Quick watch
4.3.11 Watch
4.3.12 Variables
4.3.13 Regisers
4.3.14 Meomry
4.3.15 Call Stack
4.3.16 Disassembly
4.3.17 Debugger Toolbar Menu Equivalents
4.4 其他Debug選單選項
4.4.1 Step Into Specific Function
4.4.2 Excmpions
4.4.3 Threads
4.4.4 Modules
4.5 本地選單Debugger選項
4.5.1 List Members
4.5.2 Type Info
4.5.3 Parameter Information
4.5.4 Complete Word
4.5.5 Go Definition/Refefence
4.5.6 Go To Disassembly
4.5.7 Insert/Remove Breakpoint。
4.6 Debugger視窗
4.6.1 Trae視窗
4.6.2 Watch視窗
4.7 View選單和Debugger視窗
4.7.1 Workspace
4.7.2 Output
4.8 以不同的數據類型查看觀察變數
4.9 打開Just-in-Time調式
4.10 Options視窗中的Debug標籤
4.10.1 Hexadecimal Display
4.10.2 Source Annotation
4.10.3 Code Bytes
4.10.4 Symbols
4.10.5 Parameter Values
4.10.6 Parameter Types
4.10.7 Return Value
4.10.8 Load COEF& Exports
4.10.9 Address
4.10.10 Format
4.10.11 Re-evaluate Expression
4.10.12 Show Data Bytes
4.10.13 Fixed Width
4。10.14 Display Unicode Strings
4.10.15 View Floating Point Registers
4.10.16 Just-in-Time Debugging
4.10.17 OLE RPC Debugging
4.10.18 Debug Commands Invoke Edit and Continue
4.11 鍵盤映射
4.12 Debugger快捷鍵
4.13 小結
第5章 調試版本與發行版本
5.l 預設的調試版本建立與發行版本建立設定
5.2 為調試版本建立修改工程設定
5.2.l 修改調試選項
5.2.2 修改產生調試信息的格式
5.2.3 產生一個映射檔案
5.2.4 重定向調試輸入和輸出
5.3 什麼是.pdb檔案?
5.4 什麼是.dbg檔案
5.5 調試最佳化的代碼
5.6 打開Debugger的另一種方法
5.7 使用基本版或調試版本
5.8 C/C++運行調試庫
5.8.l 舊版iostream.h和新版iostrearn之間的混亂
5.9 連線器參考資料
5.10 在調試版本中檢測發行版本錯誤
5.10.l 局部變數的自動初始化
5.10.2 檢查函式指針調用稚棧的合法性
5.10.3 檢查調用堆疊的合法性
5.11 TRACEN
5.12 VEAIFY宏
5.13 移植Visual C++舊的32位版本
5.13.l 轉換早期的32位工作空間和工程
5.13.2 與Visual C++以前的版本共存
5.14 小結
第二部分 面向過程的環境
第6章 定位、分析和修復命令行代碼錯誤
6.l 快速啟動調試
6.1.l 啟動Debugger的快速方法
6.1.2 變數初始化跟蹤
6.1.3 小心調試代碼
6.1.4 快速查看變數的內容
6.1.5 中途停止Debugger
6.1.6 執行到代碼的指定行
6.l.7 全速執行到一個斷點
6.1.8 運行至游標處
6.1.9 現在測試
6.2 高級Debugger技巧
6.2.l 使用新值運行
6.2.2 循環調試技巧
6.2.3 調用調試函式
6.2.4 遞歸調用與調用堆疊
6.2.5 查看反彙編代碼
6.3 進一步觀察變數
6.3.l 使用QuickWatch視窗
6.3.2 使用Watch視窗
6.4 小結
第7章 調試內聯彙編語言代碼
7.l 彙編語言初步
7.1.l 數據類型
7.1.2 暫存器
7.1.3 定址模式
7.1.4 指針
7.1.5 協處理器
7.2 調試
7.2.l 減法運算
7.2.2 使用256位整數
7.2.3 程式循環
7,2.4 使用協處理器求和實數.
7.2.5 使用協處理器計算正切值
7.3 小結
第8章 在Windows代碼中定位、分析和修復錯誤
8.l 使用兩台計算機調試
8.1.l 準備遠程目標計算機
8.1.2 準備主計算機
8.1.3 啟動調試會話
8.2 簡明Windows入門
8.2.l 基本的Windows代碼
8.2.2 調試檔案詳述
8.2.3 程式執行的情況
8.3 調試
8.3.l 一個動畫點陣圖程式
8.3.2 使用滑鼠繪畫
8.4 小結
第三部分 面向對象過程的環境
第9章 定位、分析和修復命令行中的錯誤
9.l 高級調試工具
9.l.l 記憶體卸出
9.1.2 定位錯誤參數從何處傳遞而來
9.1.3 查找何處修改了指針
9.2 Class View視窗要素
9.2.1 ClassView視窗的 Grouped by Access功能
9.2.2 ClassView視窗的 Base Classes功能
9.2.3 ClassView視窗的 References功能
9.2.4 ClassView視窗的 Derived Classes功能
9.2.5 ClassView視窗中選單的其餘項
9.2.6 ClassView視窗的Properities功能
9.2.7 在ClassView窗日中添加資料夾
9.2.8 在資料夾之間移動類
9.2.9 隱藏或顯不 ClassView視窗
9.3 調試ardc和argv[]
9.4 小結
第10章 使用MFC類庫開發Windows程式
10.l 為什麼使用類庫
10.2 一個真正的基礎類一一CObject
10.3 什麼是應用程式嚮導和類嚮導
10.4 一個圖形程式
10.4.l 使用AppWizard
10.4.2 使用 ClassWizard
10.4.3 建立AppWizard代碼
10.4.4 AppWizard模板代碼
10.4.5 在客戶區的圖形對象
10.5 剖面法
10.6 小結
第11章 定位、分析和修復 MFC Windows代碼中的錯誤
11.l 記憶體問題
11.1.l 有問題的代碼
11.1.2 定位和分析
11.1.3 修復工程
11.2 繪圖問題
11.2.l 有問題的代碼
11.2.2 定位和分析
11.2.3 修改工程
11.3 小結
第四部分 標準模板庫(STL)
第12章 STL編程實踐
12.1 多體系結構..
12.2 掌握 C++
12.3 STL――進退維谷的數據結構
12.4 初識 STL
12.5 STL和HP公司
12.6 大眾化的 STL
12.7 STL總覽
12.8 ANSI/ISO C++接受STL的過程
12.9 STL基本組件
12.9.l 什麼是容器?
12.9.2 什麼是適配器?
12.9.3 什麼是算法?
12.9.4 什麼是疊代器?
12.9.5 其他的STL組件
12.10 完整的STL程式包
12.11 雜亂的C/C++家族
12.12 回顧數據結構
12.12.l 靜態與動態
12.12.2 類型指針
12.12.3 VOid指針
12.13 複習匈牙利命名法
12.14 函式重載
12.15 函式指針
12.16 運算符重載
12.16.l 運算符和函式調用的重載
12.16.2 編寫自己的重載運算符
12.17 從結構到模板
12.17.l template關鍵字
12.17.2 模板語法
12.17.3 模板函式
12.17.4 模板類
12.18 為什麼STL比模板好
12.19 小結
第13章 定位、分析和修復STL代碼中的錯誤
13. l 從標準C++轉向STL語法的過程中出現的問題
13.1.l 用疊代器遍歷容器
13.1.2 仔細研究疊代器
13.1.3 流疊代器
13.1.4 為什麼使用end()
13.1.5 複製列表
13.1.6 列表中的列表
13.1.7 STL字元串指針的麻煩
13.1.8 釋放 STL指針
13.2 一個C++程式轉變為STL語法的例子
13.2.l 第一步――更新aSingleCard類
13.2.2 第二步――更新 WarDeck類
13.2.3 第三步――修復STL代碼的執行錯誤
13.2.4 第四步――更新Opponent類
13.2.5 第五步――運轉的STL程式
13.3 STL語法的源檔案Wargame.cpp
13.4 小結
第五部分 特殊的調試問題
第14章 使用DLL工作
14.l 創建一個基於MFC的動態程式庫
14.1.l 頭檔案 Framer.h
14.1.2 原始碼檔案Framer.cpp
14.1.3 建立Framer.dll
14.2 創建使用DLL的主應用程式
14.2.l 頭檔案 DLLDemoView.h
14.2.2 原始碼檔案DLLDemoView.cpp
14.3 更加仔細地查看
14.3.1 遠程調試
14.3.2 有問題的代碼
14.3.3 改正後的代碼
14.4 小結
第15章 使用ActiveX控制項工作
15.1 開發一個 ActiveX控制項
15.1.l 使用Colltrolwizard
15.1.2 Test Container
15.1.3 產生一個真實的Clock控制項
15.2 調試 Clock控制項
15.2.l 準備遠程目標計算機
15.2.2 準備主計算機
15.2.3 開始調試過程
15.2.4 查找問題
15.3 小結
第16章 調試 COM、ATL和DHTML
16.1 COM對象模型
16.2 創建一個ATL多邊形工程
16.2.1 最佳化模組代碼
16.2.2 測試控制項
16.3 調試ATLCOM控制項
16.4 小結
第17章 STL和 MFC編程
17.l 產生一個STL和MFC應用程式
17.1.l 複數
17.1.2 模板語法
17.1.3 基本的應用程式代碼
17.2 調試
17.3 小結