中文名: dot NET 高級調試
原名: Advanced dot NET Debugging
作者: Hewardt
圖書分類: 軟件
資源格式: PDF
版本: 英文版
出版社: Addison-Wesley
書號: 0-321-57889-9
發行時間: 2010年
地區: 美國
語言: 英文
簡介:
內容簡介:這是一本介紹如何通過非托管調試器(包括WinDBG、NTSD和CDB等)來調試?NET應用程序的書籍。本書內容主要包括:調試工具簡介、CLR基礎、基本調試任務、程序集加載器、托管堆與垃圾收集、同步、互用性以及一些高級主題,如事後調試、一些功能強大的調試工具和.NET 4?0中的新功能等。
本書是Mario Hewardt繼《Windows高級調試》之後推出的又一部力作。.NET框架為開發人員隱藏了底層系統的復雜性,例如自動化內存管理機制使得開發人員無須關心內存的釋放與回收,從而極大地提升軟件開發效率。然而,這種抽象也使得一些問題調試起來更為困難,因此需要了解的底層技術細節也變得更多。本書以非托管調試器(包括WinDBG、NTSD和CDB)為基礎,詳細介紹了.NET框架中關鍵組件的運作原理及其與.NET應用程序中一些常見問題的關聯,並通過豐富的示例來闡述在調試不同問題時所應采取的策略、步驟以及工具。
作為《Windows高級調試》的姊妹篇,本書的目的同樣是為了將一些有價值的調試思路和調試工具推薦給軟件開發人員,以提高開發人員的調試效率。本書的特點主要有:
深入介紹了.NET中關鍵組件的內部運作原理,包括CLR垃圾收集器、程序集加載器、應用程序域以及類型元數據等。在調試.NET應用程序時,對.NET內部運行機制了解得越清楚,就越能控制程序的運行狀態,調試效率也就越高,這與調試Windows系統應用程序或者其他任何類型程序的道理是相通的。
通過豐富的示例來講解調試過程。本書分析了.NET應用程序在程序集加載、托管堆、同步以及互用性等方面的一些常見問題。對於每類問題,作者首先給出了問題的外在表現,然後介紹如何做出合理假設以及采用相應的調試策略來進行驗證,並最終找出問題的根源。對調試過程中的每個步驟,作者都給出了非常清晰的講解和分析,使得讀者更容易掌握書中內容。
重點介紹了兩個調試器擴展SOS和SOSEX。在本書各章的內容中穿插對SOS與SOSEX中各個命令的介紹,包括命令的語法格式、應用場合以及使用技巧等。這些內容在其他書籍中是很少出現的。
此外,本書還給出了一些高級調試主題,包括崩潰轉儲文件的生成、事後調試,並介紹了一些輔助調試工具,例如PowerDbg和CLR分析器等。這些內容都為開發人員調試復雜問題提供了必要的基礎知識。在最後一章還介紹了在.NET 40中引入的一些新功能。
本書保持了《Windows高級調試》的行文風格與內容組織方式,圍繞核心的調試思路,采用了由淺入深、由表及裡的講解方式,並輔以豐富的示例和詳細的分析,使讀者逐步掌握.NET應用程序的調試技巧。本書的技術性較強,需要讀者對.NET框架的底層架構和組件有一定的了解,並且具備一定的C#編程基礎。作者Mario Hewardt是微軟公司的資深工程師,他在調試領域已經工作了十余年。本書匯聚了作者多年來的調試實踐經驗,對於.NET開發人員來說是一本不可多得的參考手冊。
內容截圖:
目錄:
CONTENTS
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii
PART I: OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Chapter 1: Introduction to the Tools . . . . . . . . . . . . . . . . . . . . . . . . . 3
Debugging Tools for Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
.NET 2.0—Redistributable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
.NET 2.0—SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
SOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
SOSEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
CLR Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Performance Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Reflector for .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
PowerDbg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Managed Debugging Assistants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Chapter 2: CLR Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
High-Level Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CLR and the Windows Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Loading Native Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Loading .NET Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Application Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
The System Application Domain . . . . . . . . . . . . . . . . . . . . . . . . . . 37
The Shared Application Domain . . . . . . . . . . . . . . . . . . . . . . . . . 37
The Default Application Domain . . . . . . . . . . . . . . . . . . . . . . . . . 37
Assembly Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38