注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Windows編程調(diào)試技術(shù)內(nèi)幕

Windows編程調(diào)試技術(shù)內(nèi)幕

Windows編程調(diào)試技術(shù)內(nèi)幕

定 價(jià):¥129.90

作 者: [印度] 塔里克·索拉米(Tarik Soulami) 著,曹軍 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書(shū)可以去


ISBN: 9787115501486 出版時(shí)間: 2021-04-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 434 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  這是一本介紹 Windows 編程調(diào)試技術(shù)的書(shū)。本書(shū)簡(jiǎn)述了 Windows 開(kāi)發(fā)框架和操作系統(tǒng)中的層。在用調(diào)試和跟蹤工具發(fā)現(xiàn)數(shù)據(jù)意義時(shí),這些基礎(chǔ)知識(shí)非常重要。本書(shū)還談到了“調(diào)試的樂(lè)趣和好處”,描述了 Windows 操作系統(tǒng)中調(diào)試器的架構(gòu),并介紹了一些可擴(kuò)展的策略,以幫助你充分利用 Windows 的調(diào)試器。本書(shū)還展示了 WinDbg 調(diào)試器的用法,通過(guò)分析代碼和操作系統(tǒng)之間的重要相互作用來(lái)幫助你更好地了解系統(tǒng)內(nèi)核。最后,本書(shū)就“觀察和分析軟件的行為”展開(kāi)討論,介紹了 Windows 事件跟蹤(ETW)技術(shù),并說(shuō)明了在調(diào)試和分析調(diào)查中利用 ETW 技術(shù)的方法。本書(shū)適合程序員、安全人員、軟件測(cè)試人員閱讀,也可以作為大專院校相關(guān)專業(yè)的教學(xué)用書(shū)和機(jī)構(gòu)的培訓(xùn)用書(shū)。

作者簡(jiǎn)介

  塔里克·索拉米(Tarik Soulami)是Windows基礎(chǔ)團(tuán)隊(duì)首席開(kāi)發(fā)主管,曾在微軟從事過(guò)10余年的系統(tǒng)級(jí)軟件設(shè)計(jì)和開(kāi)發(fā)工作。加入Windows基礎(chǔ)團(tuán)隊(duì)之前,他曾在通用語(yǔ)言運(yùn)行平臺(tái)(CLR)團(tuán)隊(duì)工作,參與了微軟.NET框架早期版本的開(kāi)發(fā)。

圖書(shū)目錄

第 一部分 背景
第 1章 Windows軟件開(kāi)發(fā) 3
1.1 Windows發(fā)展過(guò)程 3
1.1.1 Windows版本歷史 3
1.1.2 支持的CPU架構(gòu) 4
1.1.3 Windows版本特性 5
1.1.4 Windows服務(wù)術(shù)語(yǔ) 5
1.2 Windows架構(gòu) 6
1.2.1 內(nèi)核態(tài)與用戶態(tài) 6
1.2.2 用戶態(tài)系統(tǒng)進(jìn)程 7
1.2.3 用戶態(tài)應(yīng)用進(jìn)程 8
1.2.4 低級(jí)別的Windows通信機(jī)制 11
1.3 Windows開(kāi)發(fā)人員接口 13
1.3.1 開(kāi)發(fā)人員文檔資源 13
1.3.2 WDM、KMDF和 UMDF 14
1.3.3 NTDLL和USER32層 14
1.3.4 Win32 API層 15
1.3.5 COM層 15
1.3.6 CLR(.NET)層 20
1.4 微軟開(kāi)發(fā)工具 22
1.4.1 Windows驅(qū)動(dòng)程序開(kāi)發(fā)工具包(WDK) 23
1.4.2 Windows軟件開(kāi)發(fā)工具包 23
1.5 小結(jié) 23
第二部分 調(diào)試的樂(lè)趣和好處
第 2章 入門(mén) 27
2.1 調(diào)試工具介紹 27
2.1.1 獲取Windows調(diào)試器軟件包 27
2.1.2 獲取Visual Studio調(diào)試器 31
2.1.3 WinDbg和Visual Studio調(diào)試器對(duì)比 31
2.2 用戶態(tài)調(diào)試 32
2.2.1 使用WinDbg調(diào)試你的第 一個(gè)程序 32
2.2.2 列舉局部變量和函數(shù)參數(shù)值 39
2.2.3 WinDbg中的源碼級(jí)調(diào)試 43
2.2.4 符號(hào)文件、服務(wù)器和本地緩存 44
2.2.5 WinDbg符號(hào)離線緩存 45
2.2.6 WinDbg中符號(hào)解析問(wèn)題的故障排除 46
2.2.7 名稱修飾注意事項(xiàng) 46
2.2.8 獲取WinDbg命令的幫助 48
2.3 內(nèi)核態(tài)調(diào)試 49
2.3.1 你的第 一個(gè)(實(shí)時(shí))內(nèi)核態(tài)調(diào)試會(huì)話 50
2.3.2 使用物理機(jī)建立一個(gè)內(nèi)核態(tài)調(diào)試環(huán)境 55
2.3.3 使用虛擬機(jī)設(shè)置內(nèi)核態(tài)調(diào)試環(huán)境 60
2.3.4 診斷主機(jī)/目標(biāo)機(jī)通信問(wèn)題 62
2.3.5 理解KD中斷序列 63
2.3.6 在內(nèi)核態(tài)調(diào)試器中控制目標(biāo)機(jī) 64
2.3.7 在內(nèi)核態(tài)調(diào)試器中設(shè)置代碼斷點(diǎn) 66
2.3.8 獲取WinDbg內(nèi)核態(tài)調(diào)試命令的幫助 68
2.4 小結(jié) 68
第3章 Windows調(diào)試器是如何工作的 70
3.1 用戶態(tài)調(diào)試 70
3.1.1 架構(gòu)概述 70
3.1.2 Win32調(diào)試API 71
3.1.3 調(diào)試事件和異常 72
3.1.4 中斷序列 75
3.1.5 設(shè)置代碼斷點(diǎn) 76
3.1.6 觀察WinDbg中的代碼斷點(diǎn)插入 77
3.2 內(nèi)核態(tài)調(diào)試 81
3.2.1 架構(gòu)概述 81
3.2.2 設(shè)置代碼斷點(diǎn) 82
3.2.3 單步執(zhí)行目標(biāo) 82
3.2.4 切換當(dāng)前進(jìn)程上下文 83
3.3 托管代碼調(diào)試 84
3.3.1 架構(gòu)概述 85
3.3.2 SOS Windows調(diào)試器擴(kuò)展 87
3.4 腳本調(diào)試 92
3.4.1 架構(gòu)概述 92
3.4.2 在Visual Studio中調(diào)試腳本 93
3.5 遠(yuǎn)程調(diào)試 95
3.5.1 架構(gòu)概述 95
3.5.2 WinDbg中的遠(yuǎn)程調(diào)試 96
3.5.3 Visual Studio中的遠(yuǎn)程調(diào)試 99
3.6 小結(jié) 101
第4章 事后調(diào)試 102
4.1 實(shí)時(shí)調(diào)試 102
4.1.1 你的第 一個(gè)實(shí)時(shí)調(diào)試實(shí)驗(yàn) 102
4.1.2 實(shí)時(shí)調(diào)試是如何工作的 105
4.1.3 使用Visual Studio作為實(shí)時(shí)調(diào)試器 108
4.1.4 運(yùn)行時(shí)斷言和實(shí)時(shí)調(diào)試 113
4.1.5 會(huì)話0中實(shí)時(shí)調(diào)試 113
4.2 轉(zhuǎn)儲(chǔ)調(diào)試 114
4.2.1 用戶態(tài)轉(zhuǎn)儲(chǔ)文件自動(dòng)生成 114
4.2.2 使用WinDbg調(diào)試器分析崩潰轉(zhuǎn)儲(chǔ)文件 117
4.2.3 使用Visual Studio分析崩潰轉(zhuǎn)儲(chǔ)文件 123
4.2.4 手動(dòng)生成轉(zhuǎn)儲(chǔ)文件 124
4.2.5 “時(shí)間旅行”調(diào)試 125
4.2.6 內(nèi)核態(tài)事后調(diào)試 126
4.3 小結(jié) 128
第5章 基礎(chǔ)擴(kuò)展 130
5.1 非侵入式調(diào)試 130
5.2 數(shù)據(jù)斷點(diǎn) 132
5.2.1 深度分析用戶態(tài)和內(nèi)核態(tài)數(shù)據(jù)斷點(diǎn) 133
5.2.2 清除內(nèi)核態(tài)數(shù)據(jù)斷點(diǎn) 135
5.2.3 執(zhí)行數(shù)據(jù)斷點(diǎn)與代碼斷點(diǎn) 136
5.2.4 用戶態(tài)調(diào)試器數(shù)據(jù)斷點(diǎn)操作:C++全局對(duì)象和C運(yùn)行時(shí)庫(kù) 137
5.2.5 內(nèi)核態(tài)調(diào)試器數(shù)據(jù)斷點(diǎn)操作:等待進(jìn)程退出 139
5.2.6 高級(jí)例子:誰(shuí)在修改注冊(cè)表值 141
5.3 調(diào)試器腳本 145
5.3.1 使用調(diào)試器腳本重放命令 145
5.3.2 調(diào)試器偽寄存器 146
5.3.3 在調(diào)試器腳本中解析C++模板名稱 148
5.3.4 腳本實(shí)踐:在內(nèi)核調(diào)試器中列舉Windows服務(wù)進(jìn)程 149
5.4 WOW64調(diào)試 150
5.4.1 WOW64環(huán)境 150
5.4.2 WOW64進(jìn)程調(diào)試 151
5.5 Windows調(diào)試鉤子(GFLAGS) 154
5.5.1 系統(tǒng)級(jí)與進(jìn)程相關(guān)的NT全局標(biāo)志 154
5.5.2 GFLAGS工具 155
5.5.3 調(diào)試器擴(kuò)展命令!gflag 157
5.5.4 用戶態(tài)調(diào)試器對(duì)NT全局標(biāo)志值的影響 159
5.5.5 映像文件執(zhí)行選項(xiàng)鉤子 159
5.6 小結(jié) 159
第6章 代碼分析工具 161
6.1 靜態(tài)代碼分析 161
6.1.1 使用VC++靜態(tài)代碼分析捕獲你的第 一個(gè)崩潰錯(cuò)誤 161
6.1.2 SAL注釋 164
6.1.3 其他靜態(tài)分析工具 167
6.2 運(yùn)行時(shí)代碼分析 169
6.2.1 使用應(yīng)用程序驗(yàn)證器工具捕獲你的第 一個(gè)錯(cuò)誤 170
6.2.2 幕后花絮:操作系統(tǒng)中支持的校驗(yàn)器 172
6.2.3 調(diào)試擴(kuò)展命令!avrf 176
6.2.4 應(yīng)用程序校驗(yàn)器作為質(zhì)量保證工具 179
6.3 小結(jié) 179
第7章 專家調(diào)試技巧 181
7.1 基本技巧 181
7.1.1 等待一個(gè)調(diào)試器附加到目標(biāo) 182
7.1.2 加載DLL時(shí)中斷 184
7.1.3 調(diào)試進(jìn)程啟動(dòng) 188
7.1.4 調(diào)試子進(jìn)程 194
7.2 更多有用的技巧 203
7.2.1 調(diào)試錯(cuò)誤代碼故障 203
7.2.2 在第 一次異常通知時(shí)中斷 209
7.2.3 凍結(jié)線程 210
7.3 內(nèi)核態(tài)調(diào)試技巧 212
7.3.1 在用戶態(tài)進(jìn)程創(chuàng)建時(shí)中斷 212
7.3.2 調(diào)試用戶態(tài)進(jìn)程啟動(dòng) 215
7.3.3 加載DLL時(shí)中斷 216
7.3.4 未處理SEH異常時(shí)中斷 217
7.3.5 凍結(jié)線程 218
7.4 小結(jié) 220
第8章 常見(jiàn)調(diào)試場(chǎng)景·第 1部分 222
8.1 調(diào)試非法訪問(wèn) 222
8.1.1 理解內(nèi)存非法訪問(wèn) 222
8.1.2 調(diào)試擴(kuò)展命令!analyze 223
8.2 調(diào)試堆破壞 225
8.2.1 調(diào)試本地堆破壞 225
8.2.2 調(diào)試托管(GC)堆破壞 233
8.3 調(diào)試棧破壞 241
8.3.1 基于棧的緩沖區(qū)溢出 242
8.3.2 在棧破壞分析中使用數(shù)據(jù)斷點(diǎn) 243
8.3.3 重構(gòu)損壞棧的調(diào)用幀 244
8.4 調(diào)試棧溢出 246
8.4.1 理解棧溢出 246
8.4.2 調(diào)試命令kf 247
8.5 調(diào)試句柄泄露 248
8.5.1 句柄泄露例子 249
8.5.2 調(diào)試擴(kuò)展命令!htrace 250
8.6 調(diào)試用戶態(tài)內(nèi)存泄露 254
8.6.1 使用應(yīng)用程序驗(yàn)證器工具檢測(cè)資源泄露 254
8.6.2 使用UMDH工具分析內(nèi)存泄露 257
8.6.3 擴(kuò)展策略:棧跟蹤數(shù)據(jù)庫(kù)的自定義引用 260
8.7 調(diào)試內(nèi)核態(tài)內(nèi)存泄露 262
8.7.1 內(nèi)核內(nèi)存基礎(chǔ)知識(shí) 262
8.7.2 使用Pool Tagging調(diào)查內(nèi)核態(tài)泄露 263
8.8 小結(jié) 266
第9章 常見(jiàn)調(diào)試場(chǎng)景·第 2部分 268
9.1 調(diào)試資源競(jìng)爭(zhēng) 268
9.1.1 共享狀態(tài)一致性錯(cuò)誤 269
9.1.2 共享狀態(tài)生命周期管理錯(cuò)誤 273
9.1.3 DLL模塊生命周期管理錯(cuò)誤 281
9.2 調(diào)試死鎖 284
9.2.1?。ㄦi順序)Lock-Ordering死鎖 285
9.2.2 邏輯死鎖 288
9.3 調(diào)試訪問(wèn)檢查問(wèn)題 292
9.3.1 基本的NT安全模型 292
9.3.2 Windows Vista的改進(jìn) 297
9.3.3 結(jié)束 300
9.4 小結(jié) 301
第 10章 調(diào)試系統(tǒng)內(nèi)部機(jī)制 302
10.1 Windows控制臺(tái)子系統(tǒng) 302
10.1.1 printf背后的魔力 302
10.1.2 Windows UI事件的處理 309
10.1.3 Ctrl+C信號(hào)的處理 309
10.2 系統(tǒng)調(diào)用剖析 314
10.2.1 用戶態(tài)一側(cè)的系統(tǒng)調(diào)用 315
10.2.2 轉(zhuǎn)換到內(nèi)核態(tài) 317
10.2.3 內(nèi)核態(tài)一側(cè)的系統(tǒng)調(diào)用 318
10.3 小結(jié) 319
第三部分 觀察和分析軟件的行為
第 11章 Xperf介紹 323
11.1 獲取Xperf 323
11.2 你的第 一個(gè)Xperf調(diào)查 327
11.2.1 制定一個(gè)調(diào)查策略 328
11.2.2 收集場(chǎng)景的ETW跟蹤 328
11.2.3 分析收集到的ETW跟蹤 329
11.3 Xperf的優(yōu)點(diǎn)和局限性 339
11.4 小結(jié) 339
第 12章 ETW內(nèi)幕 341
12.1 ETW架構(gòu) 341
12.1.1 ETW設(shè)計(jì)原則 342
12.1.2 ETW組件 342
12.1.3 特殊的NT內(nèi)核日志記錄會(huì)話 343
12.1.4 使用Xperf 配置ETW會(huì)話 344
12.2 Windows系統(tǒng)現(xiàn)有的ETW檢測(cè) 347
12.2.1 Windows內(nèi)核中的檢測(cè) 347
12.2.2 其他Windows組件中的檢測(cè) 350
12.3 理解ETW的Stack-Walk事件 355
12.3.1 啟用和查看內(nèi)核提供者事件的棧跟蹤 355
12.3.2 啟用和查看用戶提供者事件的棧跟蹤 358
12.3.3 診斷ETW棧跟蹤問(wèn)題 359
12.4 在你的代碼中添加ETW記錄 363
12.4.1 ETW事件剖析 364
12.4.2 使用ETW Win32 API記錄事件 367
12.5 在ETW中跟蹤引導(dǎo)過(guò)程 370
12.5.1 在引導(dǎo)過(guò)程中記錄內(nèi)核提供者事件 371
12.5.2 在引導(dǎo)過(guò)程中記錄用戶提供者事件 373
12.6 小結(jié) 375
第 13章 常見(jiàn)的跟蹤場(chǎng)景 376
13.1 分析阻塞時(shí)間 376
13.1.1 ETW的CSwitch和ReadyThread事件 377
13.1.2 使用Visual Studio 2010實(shí)施等待分析 379
13.1.3 使用Xperf實(shí)施等待分析 384
13.2 分析內(nèi)存使用 389
13.2.1 分析目標(biāo)進(jìn)程中高級(jí)別的內(nèi)存使用 390
13.2.2 分析NT堆內(nèi)存使用 391
13.2.3 分析GC堆(.NET)內(nèi)存使用 395
13.3 跟蹤作為一個(gè)調(diào)試輔助 403
13.3.1 跟蹤錯(cuò)誤代碼失敗 403
13.3.2 跟蹤系統(tǒng)內(nèi)部機(jī)制 407
13.4 小結(jié) 413
附錄A WinDbg用戶態(tài)調(diào)試快速啟動(dòng) 415
附錄B Windows內(nèi)核態(tài)調(diào)試快速啟動(dòng) 428

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)