Next steps
Writing code inevitably means making mistakes. That is part of the fun of the job, I believe. Coming up with new ideas, making something out of nothing, and then making it work and improve is a great process. However, you can only do that when you have the right tools and know how to use them.
In this chapter, we have looked at the debugging tools that Visual Studio provides. We looked at what debugging and profiling actually are, discovered the possibilities with breakpoints, and looked at the other helpful debug windows.
We also investigated how to deal with multithreaded applications and the debug challenges they give us. We looked at the windows that could help us and investigated deadlocks.
To top it off, we talked about profiling and benchmarking to uncover performance bottlenecks and how to solve them.
So, we now know how to tackle most of the issues in our code. However, we have one more important thing to discuss: how do we secure our code? What does...