Mario Hewardt是《Windows高級調試》(http://www.china-pub.com/195640)的作者之一,他是微軟公司的資深開發經理。他擁有11年的工作經驗,從Windows 98一直到Windows Vista。在過去的幾年中,Mario主要從事SaaS領域的工作,開發瞭Asset Inventory Service,這個服務用於幫助用戶跟蹤他們的資産清單。他目前正在領導一個團隊,為下一代Microsoft在綫管理服務開發核心支撐平颱。
Part I – Overview
Part I introduces the reader to the basic concepts required to efficiently debug .NET applications using the Debugging Tools for Windows package.
1. Introduction to the Tools
This chapter contains a brief introduction to the tools used throughout the book, including basic usage scenarios, download locations, and installation instructions. Amongst the tools covered are:
Debugging Tools for Windows
.NET 2.0 redist/SDK
SOS
SOSEX
CLR Profiler
Performance Counters
Reflector for .NET
PowerDBG
Managed Debugging Assistants
2. CLR Fundamentals
This chapter discusses the core fundamentals of the CLR. The chapter begins with a high level overview of the major runtime components and subsequently drills down into the details and covers topics such as:
· CLR and the Windows Loader. Discusses how .NET applications are natively supported using the PE file format.
· Application domains (system, shared, default, custom) as well as loader heaps etc.
· Assembly overview
· Assembly manifest
· Type metadata
· And more…
3. Basic Debugging Tasks
Chapter 3 gives hands on examples of the basic .NET debugging tasks such as:
· Thread management
· Display stack traces
· Display local variables
· Breakpoint management
· Dumping heap based objects
· .NET exception model and how to analyze in the debuggers
· Basics of postmortem debugging
· Remote debugging
Part II – Applied Debugging
Par t II is a practical approach to debugging common .NET problems encountered in the development process. Each chapter is dedicated to a specific CLR component and/or technology and begins by detailing the inner workings of that component. Subsequently, a number of common problems related to the specific technologies are discussed and how the debuggers and tools can be used for root cause analysis.
4. Assembly Loader
The complexity of .NET applications can range from simple command line applications to complex multi-process/multi machine server applications with a large number of assemblies living in harmony. In order to efficiently debug problems in .NET applications one much be careful to understand the dependencies of .NET assemblies. This chapter takes a look at how the CLR assembly loader does its work and common problems surrounding that area.
5. Managed Heap and Garbage Collection
While .NET developers can enjoy the luxury of automatic memory management, care must still be taken to avoid costly mistakes. The highly sophisticated CLR garbage collector is an automatic memory manager that allows developers to focus less on memory management and more on application logic. Even though the CLR manages memory for the developer, care must be taken to avoid pitfalls that can wreak havoc in your applications. In this chapter we look at how the garbage collector works, how to peek into the internals of the garbage collector and some common programming mistakes related to automatic garbage collection (non memory resources, memory fragmentation, finalizer problems etc).
6. Synchronization
A multithreaded environment allows for a great deal of flexibility and efficiency. With this flexibility comes a lot of complexity in the form of thread management. To avoid costly mistakes in your application, care must be taken to ensure that threads perform their work in an orchestrated fashion. This chapter introduces the synchronization primitives available in .NET and discusses how the debuggers and tools can be used to debug common thread synchronization problems. Scenarios such as deadlocks, lock contentions, sync blocks, thin locks and thread pool problems are discussed.
7. Interoperability
.NET relies heavily on underlying Windows components. In order to invoke the native Windows components the CLR exposes two primary methods of interoperability:
1. Platform Invocation
2. COM Interoperability
Since the.NET and Win32 programming models are often very different, idiosyncrasies often lead to hard to track down problems. In this chapter we look at some very common mistakes done when working in the Interoperability layer and how to use the debuggers and tools to troubleshoot the problems.
Part III – Advanced Topics
8. Postmortem Debugging
Quite often it’s not feasible to expect full access to a failing machine so that a problem can be debugged. Bugs that surface on production machines on customer sites are rarely available for debugging. This chapter outlines the mechanisms for debugging a problem without access to the physical machine. Topics discussed include the basics of crash dumps, generating crash dumps, analyzing crash dumps etc.
9. Power Tools
Introduces the reader to power tools such as Debugging via Powershell , IISDiag and more.
10.CLR 4.0
This chapter is reserved for any substantial enhancements coming out while the book is being authored/published.
發表於2024-09-11
Advanced .NET Debugging 2024 pdf epub mobi 電子書 下載
圖書標籤: Debug .Net 編程 計算機 FYF ENU DEV COMP_Windows
例子不夠豐富, 不接地氣
評分讀完這本書可以對.Net乃至windows的底層有更深的瞭解。熟練使用SOS和SOSEX這些工具的話會幫你解決很多難題。減一星是因為裏麵的debug技術對於絕大多數程序員來說,在絕大多數情況下是不需要的(因為多數情況下VS自帶的debug功能已經 足夠瞭)。當然,一旦用到瞭,可能就是你在團隊裏證明自己能力的好機會。再減一星是因為書是在09年寫的,當初framework 4.0都還沒有正式發布,所以有些內容現在看略顯過時。
評分例子不夠豐富, 不接地氣
評分.NET開發者必備.
評分.NET開發者必備.
Advanced .NET Debugging 2024 pdf epub mobi 電子書 下載