Summary
In this chapter, you learned how to apply various sanitizers. You detected pointer errors with the address
sanitizer, uninitialized memory access with the memory
sanitizer, and detected data races with the thread
sanitizer. Application errors are often triggered by malformed input, and you implemented fuzz testing to test your application with random data.
You instrumented your application with XRay to identify the performance bottlenecks, and you also learned about the various ways to visualize data. In this chapter, you also used the Clang Static Analyzer to find possible errors through interpretation of the source, and you learned how to build your own Clang plugin.
These skills will help you to raise the quality of the applications you build. It is certainly good to find runtime errors before your application users complain about them. Applying the knowledge gained in this chapter, you can not only find a wide range of common errors but also extend Clang with new...