Home > Store > Programming > .NET and Windows Programming
Advanced .NET Debugging
- By Mario Hewardt
- Published Nov 9, 2009 by Addison-Wesley Professional. Part of the Addison-Wesley Microsoft Technology Series series.
- Copyright 2010
- Dimensions: 7 X 9-1/8
- Pages: 552
- Edition: 1st
- Book
- ISBN-10: 0-321-57889-9
- ISBN-13: 978-0-321-57889-1
- eBook
- ISBN-10: 0-321-57899-6
- ISBN-13: 978-0-321-57899-0
Register your product to gain access to bonus material or receive a coupon.
Praise for Advanced .NET Debugging
“While the .NET environment provides a developer with a powerful toolbox to accomplish their goals, it can often be a daunting task to debug some of the issues that inevitably crop up during software development. This book provides the crucial details about how the CLR works internally, which you need to know to diagnose many classes of bugs in your .NET programs, and it provides clear examples of how to solve the same types of issues we see our customers struggle with on a daily basis. This book is required reading for all serious .NET developers.”
–Lee Culver, CLR Quick Response Team, Microsoft Corporation
“Have you ever wondered why your .NET application is not responding? Or why it’s intermittently consuming high CPU? Or crashing? When things go wrong you need to think low level, using the proper knowledge and tools to investigate the internals of your application. Advanced .NET Debugging delivers the knowledge necessary to quickly isolate nasty software problems. Welcome to the debugging world!”
–Roberto A. Farah, Senior Premier Field Engineer, Microsoft Corporation
“Mario Hewardt’s Advanced .NET Debugging is an excellent resource for both beginner and experienced developers working with .NET. The book is also packed with many debugging tips and discussions of CLR internals that will benefit developers architecting software. I highly recommend Mario’s book.”
–Jeffrey Richter, consultant, trainer, and author at Wintellect
“Mario has done it again. His Advanced Windows Debugging (coauthored with Daniel Pravat) is an invaluable resource for native code debugging, and Advanced .NET Debugging achieves the same quality, clarity and breadth to make it just as invaluable for .NET debugging. The detail he provides on how to measure managed heap usage, understand the behavior of the garbage collector, and how to track down synchronization bugs will make you more efficient at finding and fixing bugs in your managed code projects.”
–Mark Russinovich, Technical Fellow, Microsoft Corporation
“This book talks about tools such as SOS in the kind of depth that I have not seen elsewhere. It’s a definite aid in understanding and debugging managed application behavior.”
–Maoni Stephens, GC Developer, Microsoft Corporation
“Advanced .NET Debugging is essential reading for someone who wants to get under the covers and obtain an intimate understanding of how the .NET Common Language Runtime works. It clearly identifies the layout of the system and how the assemblies are loaded and organized. I recommend it to anyone who wants to debug more complex issues brought on by synchronization problems and corruption. It also effectively addresses the difficult task of postmortem debugging.”
–Pat Styles, Microsoft Corporation
The Only Complete, Practical Guide to Fixing the Toughest .NET Bugs
Advanced .NET Debugging is the first focused, pragmatic guide to tracking down today’s most complex and challenging .NET application bugs. It is the only book to focus entirely on using powerful native debugging tools, including WinDBG, NTSD, and CDB, to debug .NET applications. Using these tools, author Mario Hewardt explains how to identify the real root causes of problems–far more quickly than you ever could with other debuggers.
Hewardt first introduces the key concepts needed to successfully use .NET’s native debuggers. Next, he turns to sophisticated debugging techniques, using real-world examples that demonstrate many common C# programming errors.
This book enables you to
- Make practical use of postmortem debugging, including PowerDBG and other “power tools”
- Understand the debugging details and implications of the new .NET CLR 4.0
- Master and successfully use Debugging Tools for Windows, as well as SOS, SOSEX, CLR Profiler, and other powerful tools
- Gain a deeper, more practical understanding of CLR internals, such as examining thread-specific data, managed heap and garbage collector, interoperability layer, and .NET exceptions
- Solve difficult synchronization problems, managed heap problems, interoperability problems, and much more
- Generate and successfully analyze crash dumps
A companion web site (advanceddotnetdebugging.com) contains all sample code, examples, and bonus content.
Related Article
Silverlight Debugging: Using Debugging Tools for Windows
Author's Site
Please visit the author's web site at advanceddotnetdebugging.com.
Online Sample Chapter
Advanced .NET Debugging: Managed Heap and Garbage Collection
Sample Pages
Download the sample pages (includes Chapter 5 and Index)
Table of 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
Application Domains 33
Assembly Overview 38
Assembly Manifest 39
Type Metadata 42
Summary 68
Chapter 3: Basic Debugging Tasks 69
The Debugger and the Debugger Target 69
Symbols 74
Controlling Execution 77
Loading Managed Code Extensions 85
Controlling CLR Debugging 90
Setting Breakpoints 90
Object Inspection 103
Thread Operations 131
Code Inspection 143
CLR Internals Commands 146
Diagnostics Commands 149
SOSEX Extension Commands 151
Crash Dump Files 163
Summary 165
Part II: Applied Debugging 167
Chapter 4: Assembly Loader 169
CLR Loader Overview 169
Simple Assembly Load Failure 179
Load Context Failure 185
Interoperability and DllNotFoundException 195
Debugging Light Weight Code Generation 197
Summary 202
Chapter 5: Managed Heap and Garbage Collection 203
Windows Memory Architecture Overview 204
Garbage Collector Internals 213
Debugging Managed Heap Corruptions 254
Debugging Managed Heap Fragmentation 262
Debugging Out of Memory Exceptions 272
Summary 291
Chapter 6: Synchronization 293
Synchronization Basics 293
Thread Synchronization Primitives 294
Synchronization Internals 306
Synchronization Scenarios 316
Summary 344
Chapter 7: Interoperability 345
Platform Invocation 345
COM Interoperability 352
Debugging P/Invoke Calls 358
Debugging Interop Leaks 373
Debugging COM Interop Finalization 378
Summary 388
Part III: Advanced Topics 389
Chapter 8: Postmortem Debugging 391
Dump File Fundamentals 392
Windows Error Reporting 409
Summary 438
Chapter 9: Power Tools 439
PowerDbg 439
Visual Studio 448
CLR Profiler 460
WinDbg and the CmdTree Command 467
Summary 469
Chapter 10: CLR 4.0 471
Tools 471
Managed Heap and Garbage Collection 472
Synchronization 480
Interoperability 483
Postmortem Debugging 484
Summary 485
Index 487

This book includes free shipping!
This book includes free shipping!

eBook
$39.99
$35.99
This PDF is DRM-free and requires the free Adobe® Reader® software. The PDF will be accessible from your Account page after purchase. Read our Non-DRM PDF FAQ.

Rough Cuts
Available from Safari Books Online
What is this?
What is a Rough Cut?
The Rough Cuts service from Safari Books Online gives you exclusive access to an evolving manuscript that you can read online or download as a PDF and print. A Rough Cuts book is not fully edited or completely formatted, but you'll get access to new versions as they are created.
This book includes free shipping!
- Save more by becoming a member.
- Request an Instructor or Media review copy.
- Corporate, Academic, and Employee Purchases
- International Buying Options

Account Sign In
View your cart