This chapter started with a discussion on the importance of testing for an application. You learned that designing and executing a comprehensive test plan is desirable to ensure that an application is robust, accurate, and reliable.
The .NET Framework provides various classes and techniques that implement tracing in applications. You use tracing to display informative messages during execution of a program. The Trace and Debug classes provide different methods to generate messages at specific locations in the code. You have learned how trace switches can be applied to an application to give you control over the type of tracing information generated by an application without even needing to recompile the application.
You have also learned about the various Visual Basic preprocessing directives that are available in Visual Basic .NET. You have seen how you can use the Conditional attribute to conditionally compile methods.
The compiler pinpoints syntactical errors at compile time. The tough job is to find logical and runtime errors in an application. Visual Basic .NET offers lots of tools for debugging. In this chapter, you learned about various tools available for debugging.
You also learned how to debug an already running process, debug a process running on a remote machine, and debug DLL files. You also learned how to apply these concepts to debug a Windows service, a serviced component, a .NET remoting object, and an XML Web service.
Finally, you learned how to work with event logs and performance counters. As you continue to work with Visual Basic .NET, you'll discover more benefits of the tools and techniques discussed in this chapter.