
掃描右側(cè)圖片或微信搜索 “ Java技術(shù)分享屋 ” ,回復(fù) “ 驗(yàn)證碼 ” ,獲取驗(yàn)證密碼。
本資料僅供讀者預(yù)覽及學(xué)習(xí)交流使用,不能用于商業(yè)用途,請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。如果喜歡,請(qǐng)購(gòu)買正版!
一.資料圖片
二.資料簡(jiǎn)介
圍繞如何實(shí)現(xiàn)高效調(diào)試這一主題,本書深入系統(tǒng)地介紹了以調(diào)試器為核心的各種軟件調(diào)試技術(shù)。本書共30章,分為6篇。第1篇介紹了軟件調(diào)試的概況和簡(jiǎn)要?dú)v史。第2篇以英特爾架構(gòu)(IA)的CPU為例,介紹了計(jì)算機(jī)系統(tǒng)的硬件核心所提供的調(diào)試支持,包括異常、斷點(diǎn)指令、單步執(zhí)行標(biāo)志、分支監(jiān)視、JTAG和MCE等。第3篇以Windows操作系統(tǒng)為例,介紹了計(jì)算機(jī)系統(tǒng)的軟件核心中的調(diào)試設(shè)施,包括內(nèi)核調(diào)試引擎、用戶態(tài)調(diào)試子系統(tǒng)、異常處理、驗(yàn)證器、錯(cuò)誤報(bào)告、事件追蹤、故障轉(zhuǎn)儲(chǔ)、硬件錯(cuò)誤處理等。第4篇以Visual C/C++編譯器為例,介紹了生產(chǎn)軟件的主要工具的調(diào)試支持,重點(diǎn)討論了編譯期檢查、運(yùn)行期檢查及調(diào)試符號(hào)。第5篇討論了軟件的可調(diào)試性,探討了如何在軟件架構(gòu)設(shè)計(jì)和軟件開發(fā)過程中加入調(diào)試支持,使軟件更容易被調(diào)試。在前5篇內(nèi)容的基礎(chǔ)上,第6篇首先介紹了調(diào)試器的發(fā)展歷史、典型功能和實(shí)現(xiàn)方法,然后全面介紹了WinDBG調(diào)試器,包括它的模塊結(jié)構(gòu)、工作模型、使用方法和主要調(diào)試功能的實(shí)現(xiàn)細(xì)節(jié)。.
本書是對(duì)軟件調(diào)試技術(shù)在過去50年中所取得成就的全面展示,也是對(duì)作者本人在軟件設(shè)計(jì)和系統(tǒng)開發(fā)第一線奮戰(zhàn)10多年的經(jīng)驗(yàn)總結(jié)。本書理論與實(shí)踐緊密結(jié)合,選取了大量具有代表性和普遍意義的技術(shù)細(xì)節(jié)進(jìn)行討論,是學(xué)習(xí)軟件調(diào)試技術(shù)的寶貴資料,適合每一位希望深刻理解軟件和自由駕馭軟件的人閱讀,特別是從事軟件開發(fā)、測(cè)試、支持的技術(shù)人員和有關(guān)的研究人員。
三.資料目錄
第1篇 緒論第1章 軟件調(diào)試基礎(chǔ)
1.1 簡(jiǎn)介
1.2 基本特征
1.3 簡(jiǎn)要?dú)v史
1.4 分類
1.5 調(diào)試技術(shù)概覽
1.6 錯(cuò)誤與缺欠
1.7 與軟件工程的關(guān)系
1.8 本章總結(jié)
第2篇 CPU的調(diào)試支持
第2章 CPU基礎(chǔ)
2.1 指令和指令集
2.2 IA-32處理器
2.3 CPU的操作模式
2.4 寄存器
2.5 理解保護(hù)模式
2.6 段機(jī)制
2.7 分頁(yè)機(jī)制(Paging)
2.8 系統(tǒng)概貌
2.9 本章總結(jié)
第3章 中斷和異常
3.1 概念和差異
3.2 異常的分類
3.3 異常例析
3.4 中斷/異常優(yōu)先級(jí)
3.5 中斷/異常處理
3.6 本章總結(jié)
第4章 斷點(diǎn)和單步執(zhí)行
4.1 軟件斷點(diǎn)
4.2 硬件斷點(diǎn)
4.3 陷阱標(biāo)志
4.4 實(shí)模式調(diào)試器例析
4.5 本章總結(jié)
第5章 分支記錄和性能監(jiān)視
5.1 分支監(jiān)視概覽
5.2 使用寄存器的分支記錄
5.3 使用內(nèi)存的分支記錄
5.4 DS示例:CpuWhere
5.5 性能監(jiān)視
5.6 本章總結(jié)
第6章 機(jī)器檢查架構(gòu)(MCA)
6.1 奔騰處理器的機(jī)器檢查機(jī)制
6.2 MCA
6.3 編寫MCA軟件
6.4 本章總結(jié)
第7章 JTAG調(diào)試
7.1 簡(jiǎn)介
7.2 JTAG原理
7.3 JTAG應(yīng)用
7.4 IA-32處理器的JTAG支持
7.5 本章總結(jié)
第3篇 操作系統(tǒng)的調(diào)試支持
第8章 Windows概要
8.1 簡(jiǎn)介
8.2 進(jìn)程和進(jìn)程空間
8.3 內(nèi)核模式和用戶模式
8.4 架構(gòu)和系統(tǒng)部件
8.5 本章總結(jié)
第9章 用戶態(tài)調(diào)試模型
9.1 概覽
9.2 采集調(diào)試消息
9.3 發(fā)送調(diào)試消息
9.4 調(diào)試子系統(tǒng)服務(wù)器(XP之后)
9.5 調(diào)試子系統(tǒng)服務(wù)器(XP之前)
9.6 比較兩種模型
9.7 NTDLL中的調(diào)試支持例程
9.8 調(diào)試API 224
9.9 本章總結(jié)
第10章 用戶態(tài)調(diào)試過程
10.1 調(diào)試器進(jìn)程
10.2 被調(diào)試進(jìn)程
10.3 從調(diào)試器中啟動(dòng)被調(diào)試程序
10.4 附加到已經(jīng)啟動(dòng)的進(jìn)程
10.5 處理調(diào)試事件
10.6 中斷到調(diào)試器
10.7 輸出調(diào)試字符串
10.8 終止調(diào)試會(huì)話
10.9 本章總結(jié)
第11章 中斷和異常管理
11.1 中斷描述符表
11.2 異常的描述和登記
11.3 異常分發(fā)過程
11.4 結(jié)構(gòu)化異常處理(SEH)
11.5 向量化異常處理(VEH)
11.6 本章總結(jié)
第12章 未處理異常和JIT調(diào)試
12.1 簡(jiǎn)介
12.2 默認(rèn)的異常處理器
12.3 未處理異常過濾函數(shù)
12.4 應(yīng)用程序錯(cuò)誤對(duì)話框
12.5 JIT調(diào)試和Dr. Watson
12.6 頂層異常過濾函數(shù)
12.7 Dr. Watson
12.8 DRWTSN32的日志文件
12.9 用戶態(tài)轉(zhuǎn)儲(chǔ)文件
12.10 本章總結(jié)
第13章 硬錯(cuò)誤和藍(lán)屏
13.1 硬錯(cuò)誤提示
13.2 藍(lán)屏終止(BSOD)
13.3 系統(tǒng)轉(zhuǎn)儲(chǔ)文件
13.4 分析系統(tǒng)轉(zhuǎn)儲(chǔ)文件
13.5 輔助的錯(cuò)誤提示方法
13.6 配置錯(cuò)誤提示機(jī)制
13.7 防止濫用錯(cuò)誤提示機(jī)制
13.8 本章總結(jié)
第14章 錯(cuò)誤報(bào)告
14.1 WER 1.0
14.2 系統(tǒng)錯(cuò)誤報(bào)告
14.3 WER服務(wù)器端
14.4 WER 2.0
14.5 CER
14.6 本章總結(jié)
第15章 日志
15.1 日志簡(jiǎn)介
15.2 ELF的架構(gòu)
15.3 ELF的數(shù)據(jù)組織
15.4 察看和使用ELF日志
15.5 CLFS的組成和原理
15.6 CLFS的使用方法
15.7 本章總結(jié)
第16章 事件追蹤
16.1 簡(jiǎn)介
16.2 ETW的架構(gòu)
16.3 提供ETW消息
16.4 控制ETW會(huì)話
16.5 消耗ETW消息
16.6 格式描述
16.7 NT Kernel Logger
16.8 Global Logger Session
16.9 Crimson API
16.10 本章總結(jié)
第17章 WHEA
17.1 目標(biāo)和架構(gòu)
17.2 錯(cuò)誤源
17.3 錯(cuò)誤處理過程
17.4 錯(cuò)誤持久化
17.5 注入錯(cuò)誤
17.6 本章總結(jié)
第18章 內(nèi)核調(diào)試引擎
18.1 概覽
18.2 連接
18.3 啟用
18.4 初始化
18.5 內(nèi)核調(diào)試協(xié)議
18.6 與內(nèi)核交互
18.7 建立和維持連接
18.8 本地內(nèi)核調(diào)試
18.9 本章總結(jié)
第19章 Windows的驗(yàn)證機(jī)制
19.1 簡(jiǎn)介
19.2 驅(qū)動(dòng)驗(yàn)證器的工作原理
19.3 使用驅(qū)動(dòng)驗(yàn)證器
19.4 應(yīng)用程序驗(yàn)證器的工作原理
19.5 使用應(yīng)用程序驗(yàn)證器
19.6 本章總結(jié)
第4篇 編譯器的調(diào)試支持
第20章 編譯和編譯期檢查
20.1 程序的構(gòu)建過程
20.2 編譯
20.3 Visual C++編譯器
20.4 編譯錯(cuò)誤和警告
20.5 編譯期檢查
20.6 標(biāo)準(zhǔn)標(biāo)注語(yǔ)言
20.7 本章總結(jié)
第21章 運(yùn)行庫(kù)和運(yùn)行期檢查
21.1 C/C++運(yùn)行庫(kù)
21.2 鏈接運(yùn)行庫(kù)
21.3 運(yùn)行庫(kù)的初始化和清理
21.4 運(yùn)行期檢查
21.5 報(bào)告運(yùn)行期檢查錯(cuò)誤
21.6 本章總結(jié)
第22章 棧和函數(shù)調(diào)用
22.1 簡(jiǎn)介
22.2 棧的創(chuàng)建過程
22.3 CALL和RET指令
22.4 局部變量和棧幀
22.5 幀指針省略(FPO)
22.6 棧指針檢查
22.7 調(diào)用協(xié)定
22.8 ??臻g的增長(zhǎng)和溢出
22.9 棧下溢
22.10 緩沖區(qū)溢出
22.11 變量檢查
22.12 基于Cookie的安全檢查
22.13 本章總結(jié)
第23章 堆和堆檢查
23.1 理解堆
23.2 堆的創(chuàng)建和銷毀
23.3 分配和釋放堆塊
23.4 堆的內(nèi)部結(jié)構(gòu)
23.5 低碎片堆(LFH)
23.6 堆的調(diào)試支持
23.7 ?;厮輸?shù)據(jù)庫(kù)
23.8 堆溢出和檢測(cè)
23.9 頁(yè)堆
23.10 準(zhǔn)頁(yè)堆
23.11 CRT堆
23.12 CRT堆的調(diào)試堆塊
23.13 CRT堆的調(diào)試功能
23.14 堆塊轉(zhuǎn)儲(chǔ)
23.15 泄漏轉(zhuǎn)儲(chǔ)
23.16 本章總結(jié)
第24章 異常處理代碼的編譯
24.1 概覽
24.2 FS:[0]鏈條
24.3 遍歷FS:[0]鏈條
24.4 執(zhí)行異常處理函數(shù)
24.5 __try{}__except()結(jié)構(gòu)
24.6 安全問題
24.7 本章總結(jié)
第25章 調(diào)試符號(hào)
25.1 名稱修飾
25.2 調(diào)試信息的存儲(chǔ)格式
25.3 目標(biāo)文件中的調(diào)試信息
25.4 PE文件中的調(diào)試信息
25.5 DBG文件
25.6 PDB文件
25.7 有關(guān)的編譯和鏈接選項(xiàng)
25.8 PDB文件中的數(shù)據(jù)表
25.9 本章總結(jié)
第5篇 可調(diào)試性
第26章 可調(diào)試性概覽
26.1 簡(jiǎn)介
26.2 Showstopper和未雨綢繆
26.3 基本原則
26.4 不可調(diào)試代碼
26.5 可調(diào)試性例析
26.6 與安全、性能和商業(yè)秘密的關(guān)系
26.7 本章總結(jié)
第27章 可調(diào)試性的實(shí)現(xiàn)
27.1 角色和職責(zé)
27.2 可調(diào)試架構(gòu)
27.3 通過棧回溯實(shí)現(xiàn)可追溯性
27.4 數(shù)據(jù)的可追溯性
27.5 可觀察性的實(shí)現(xiàn)
27.6 自檢和自動(dòng)報(bào)告
27.7 本章總結(jié)
第6篇 調(diào)試器
第28章 調(diào)試器概覽
28.1 TX-0計(jì)算機(jī)和FLIT調(diào)試器
28.2 小型機(jī)和DDT調(diào)試器
28.3 個(gè)人計(jì)算機(jī)和它的調(diào)試器
28.4 調(diào)試器的功能
28.5 分類標(biāo)準(zhǔn)
28.6 實(shí)現(xiàn)模型
28.7 經(jīng)典架構(gòu)
28.8 HPD標(biāo)準(zhǔn)
28.9 本章總結(jié)
第29章 WinDBG及其實(shí)現(xiàn)
29.1 WinDBG溯源
29.2 C階段的架構(gòu)
29.3 重構(gòu)
29.4 調(diào)試器引擎的架構(gòu)
29.5 調(diào)試目標(biāo)
29.6 調(diào)試會(huì)話
29.7 接收和處理命令
29.8 本章總結(jié)
第30章 WinDBG用法詳解
30.1 工作空間
30.2 命令概覽
30.3 用戶界面
30.4 輸入和執(zhí)行命令
30.5 建立調(diào)試會(huì)話
30.6 終止調(diào)試會(huì)話
30.7 理解上下文
30.8 調(diào)試符號(hào)
30.9 事件處理
30.10 控制調(diào)試目標(biāo)
30.11 單步執(zhí)行
30.12 使用斷點(diǎn)
30.13 控制進(jìn)程和線程
30.14 觀察棧
30.15 分析內(nèi)存
30.16 遍歷鏈表
30.17 調(diào)用目標(biāo)程序的函數(shù)
30.18 命令程序
30.19 本章總結(jié)
附錄A 示例程序列表
附錄B WinDBG標(biāo)準(zhǔn)命令列表
索引