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 performed 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 also instrumented your application with XRay to identify the performance bottlenecks, and you also learned about the various ways you can visualize the data. This chapter also taught you how to utilize the clang static analyzer for identifying potential errors by interpreting the source code, and how to create your own clang plugin.
These skills will help you raise the quality of the applications you build as it is certainly good to find runtime errors before your application users complain about them. Applying the knowledge you’ve gained in this chapter, you can not only find a wide range of common errors...