This chapter looked in some depth at the Visual Studio .NET debugger. You learned how to prepare Visual Studio for a debugging session and how to debug production programs. I discussed debug symbols and the importance of keeping them matched with their corresponding sources and binaries. Then you saw how to compensate at least partially for the loss of Edit and Continue, and how to examine and debug CIL. Finally, you learned about some of the dangers of code optimization.