This chapter examined debugging and monitoring distributed applications in some detail. Once you understand the major differences between debugging local and distributed applications, and especially the difficulties in trying to diagnose remote failures, it's much easier to design and implement distributed systems that can be debugged effectively. Visual Studio's remote debugging facilities are excellent , and they can help you find and diagnose a problem in-place rather than forcing you into trying to replicate the problem in your development environment. Along with allowing you to debug remotely in a nonintrusive manner and use remoting to monitor your distributed systems, .NET provides more effective distributed debugging than ever before offered by Microsoft tools.