| About the Author | p. xiii |
| About the Technical Reviewer | p. xv |
| Acknowledgments | p. xvii |
| Introduction | p. xix |
| Debugging in the VB .NET World | p. 1 |
| Strategic Debugging Issues | p. 3 |
| Application Reliability | p. 4 |
| Application Availability | p. 10 |
| Debugging Complex Systems | p. 14 |
| Debugging Developer Psychology | p. 18 |
| Summary | p. 28 |
| Interlude | p. 29 |
| Language Surprises in VB .NET | p. 33 |
| The True Value of True in VB .NET | p. 33 |
| Class Member Overloading | p. 34 |
| Understanding Inheritance Issues | p. 41 |
| Miscellaneous Gotchas | p. 53 |
| Summary | p. 68 |
| Interlude | p. 69 |
| The Debugging Tools | p. 71 |
| The Visual Studio .NET Debugger | p. 73 |
| Introduction to the Visual Studio Debugger | p. 73 |
| How the Visual Studio Debugger Works | p. 77 |
| Three Debugging Modes | p. 84 |
| Using the Visual Studio Debugger IDE | p. 93 |
| Visual Studio Debugger IDE Issues | p. 118 |
| Summary | p. 120 |
| Interlude | p. 121 |
| Using the Visual Studio .NET Debugger | p. 123 |
| Visual Studio Preparation | p. 123 |
| Solution Preparation | p. 130 |
| Project Preparation | p. 133 |
| Setting the Active Debugger Process | p. 138 |
| Debugging Production Applications | p. 139 |
| Debug Symbols Management | p. 140 |
| Improving JIT Debugging | p. 143 |
| Coping Without Edit and Continue | p. 143 |
| Debugging Common Intermediate Language | p. 144 |
| Understanding Code Optimization | p. 146 |
| Summary | p. 150 |
| Interlude | p. 151 |
| Other Debugging Tools | p. 153 |
| Cordbg: The Console Debugger | p. 153 |
| Dbgclr: The GUI Debugger | p. 157 |
| Ildasm: Viewing CIL | p. 158 |
| Performance Monitor: Viewing Performance Information | p. 166 |
| Adepends: Viewing Assembly Dependencies | p. 170 |
| PermView: Viewing Assembly Permissions | p. 171 |
| Summary | p. 178 |
| Interlude | p. 178 |
| Tracing and Instrumentation | p. 183 |
| Useful Diagnostic Information | p. 184 |
| VB .NET Tracing | p. 188 |
| Using the Debug Class | p. 211 |
| Using Custom Performance Counters | p. 213 |
| Summary | p. 216 |
| Interlude | p. 217 |
| Debugging Applications | p. 219 |
| Windows Forms Debugging | p. 221 |
| Debugging a Windows Forms Application | p. 221 |
| Debugging Other Windows Forms Applications | p. 232 |
| Summary | p. 237 |
| Interlude | p. 238 |
| Web Services Debugging | p. 241 |
| Debugging the ASP .NET Worker Process | p. 242 |
| Debugging Preparation | p. 242 |
| Debugging Using a Web Browser | p. 244 |
| Debugging Using a SOAP Client | p. 248 |
| Debugging the Client Proxy | p. 252 |
| Debugging a Remote Web Service | p. 253 |
| Debugging a Deployed Web Service | p. 253 |
| Handling Web Service Failure | p. 254 |
| Tracking SOAP Messages | p. 263 |
| Tracing and Instrumentation | p. 274 |
| Summary | p. 274 |
| Interlude | p. 275 |
| ASP .NET Debugging | p. 277 |
| IIS Debugging Considerations | p. 277 |
| Debugging Preparation | p. 283 |
| Debugging the AspNetDebugDemo Application | p. 291 |
| Using ASP .NET Tracing | p. 300 |
| Summary | p. 307 |
| Interlude | p. 307 |
| Windows Services Debugging | p. 309 |
| Debugging the ServiceAdmin Service | p. 309 |
| Debugging Installation Issues | p. 316 |
| Be Careful | p. 318 |
| Summary | p. 318 |
| Interlude | p. 319 |
| VB. Classic Debugging | p. 321 |
| VB. Classic Versions | p. 321 |
| Managed vs. Unmanaged | p. 322 |
| VB .NET Application Using a VB 6.0 Component | p. 323 |
| VB 6.0 Application Using a VB .NET Component | p. 329 |
| Overcoming COM Versioning Problems | p. 333 |
| Summary | p. 337 |
| Interlude | p. 337 |
| SQL Server Debugging | p. 339 |
| Debugging Requirements | p. 339 |
| Debugging Installation | p. 340 |
| Permissions and sp_sdidebug | p. 341 |
| Remote Debugging Permissions | p. 342 |
| Direct Debugging with Visual Studio | p. 343 |
| Direct Debugging with Query Analyzer | p. 346 |
| Application Debugging | p. 346 |
| SQL Debugging Limitations | p. 352 |
| Understanding SQL Security | p. 353 |
| Summary | p. 355 |
| Interlude | p. 355 |
| Debugging Common Scenarios | p. 359 |
| Error Handling and Exception Management | p. 361 |
| Exceptions vs. Errors | p. 361 |
| Requirements for Error Handling | p. 363 |
| Exceptions and Exception Management | p. 369 |
| Summary | p. 417 |
| Interlude | p. 418 |
| Debugging Multithreaded Applications | p. 421 |
| Multithreading Basics | p. 422 |
| Multithreading Problems | p. 426 |
| The ThreadMonitor Application | p. 443 |
| Multithreading in Windows Forms | p. 448 |
| Dealing with Thread Failure | p. 453 |
| Summary | p. 456 |
| Interlude | p. 456 |
| Debugging Distributed Systems | p. 459 |
| Understanding Distributed Applications | p. 459 |
| Introduction to Remote Debugging | p. 466 |
| Remote Debugging Preparation | p. 468 |
| The HeartbeatMonitor Application | p. 474 |
| Monitoring Distributed Applications | p. 481 |
| Summary | p. 483 |
| Interlude | p. 483 |
| Index | p. 485 |
| Table of Contents provided by Rittenhouse. All Rights Reserved. |