The Debugging Process
Most developers "almost-kinda" follow a pattern when debugging. Unfortunately, many developers go about debugging wrong because they have never been shown how to properly do it.
- The skill set involved with debugging
- The debugging process
Infrastructure You Have to Have, and How to Use It
- One of the keys to minimizing bugs is learning the best practices from companies that are successfully shipping great software on time.
- Version control and bug tracking tips
- Compiler switches that matter
- All about FxCop/Code Analysis
- Everything to know about Symbol Servers
- Everything to know about Source Servers
Debugging During Coding
- One of the biggest keys to save you hundreds of wasted hours in the debugger is to ensure you don't type the bugs in the source code in the first place or check them into the master version control system.
- Assertions in depth
- How to know your code is good
- Real world unit testing
The main reason for using a debugger is setting breakpoints so you can gain control of the debuggee in order to find bugs. Unfortunately, most developers don't even scratch the surface of the debugger's power when it comes to breakpoints.
- Advanced breakpoint setting tricks
- Breakpoint hit count modifier
- Breakpoint condition modifier
- Filter breakpoints
The Watch Window
Probably the greatest piece of engineering work in Visual Studio is the amazing Watch window. This section will cover the tricks and techniques necessary to get the most out of the Watch window.
- Advanced Watch window usage
- Testing using the Watch window
- Auto expanding types to see the key information faster
- Writing custom visualizers
Advanced Tips and Tricks
The final section on Visual Studio covers a loose collection of advanced techniques developers can use in the debugger such as the hard problem of debugging massively multithreaded applications.
- Set next statement
- Advanced multithreaded debugging
- Managed Debugging Assistants
No network administrator managing production servers is ever going to let you install Visual Studio on a production box. What you are going to get off a production server is a minidump, which is a snapshot of all the memory your .NET application is using. In order to analyze those minidumps, you have to use a different debugger, WinDBG.
- The basics of WinDBG
- WinDBG regular commands for debugging
- WinDBG meta commands for debugging
- WinDBG extension command for debugging
- Getting SOS loaded
SOS is one of those tools that gives you all the power in the world, but offers no way to get started on using that power.
- Process state SOS commands
- Using SOSEX to fix SOS limitations
- Looking objects in memory with SOS commands
- SOS heap commands
- Finding reference SOS commands
- Solving multithreaded deadlocks with SOS and WinDBG
Everyone wants fast code. One of the problems is that very few developers have been properly exposed on how to think about the gestalt, or Zen of performance.
- Thinking about performance
- Algorithmic performance
- .NET performance best practices
- .NET performance tools best practices
The reproducible numbers are everything when it comes to performance. In the final section of the course, students will learn about freeware and commercial performance tools they can use to analyze their application's performance.
- Using the Visual Studio performance tools
- Finding a performance problem