書馨卡幫你省薪 2024個人購書報告 2024中圖網(wǎng)年度報告
歡迎光臨中圖網(wǎng) 請 | 注冊

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

出版社:人民郵電出版社出版時間:2021-04-01
開本: 16開 頁數(shù): 434
中 圖 價:¥97.4(7.5折) 定價  ¥129.9 登錄后可看到會員價
暫時缺貨 收藏
運費6元,滿39元免運費
?新疆、西藏除外
本類五星書更多>

Windows編程調(diào)試技術(shù)內(nèi)幕 版權(quán)信息

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

1.關(guān)于Windows系統(tǒng)中調(diào)試和跟蹤策略的實用指南; 2.為構(gòu)建更好的軟件而在全開發(fā)周期中使用Windows調(diào)試器; 3.作者是Windows基礎(chǔ)團隊首席開發(fā)主管,有10余年的系統(tǒng)級軟件設(shè)計和開發(fā)經(jīng)驗; 4.Windows 編程底層調(diào)試技術(shù)。

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

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

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

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

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

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

商品評論(0條)
暫無評論……
書友推薦
編輯推薦
返回頂部
中圖網(wǎng)
在線客服