Summary
In this chapter, we looked at many ways to debug applications that are misbehaving, in addition to learning some ways to check on the overall health of the app. First, we looked at some basic debugging practices such as printing, using breakpoints, and understanding the call stack. Then we looked at some advanced debugging tools like Address Sanitization, which helped us solve hard to find bugs in C and Objective-C code. We also learned about the performance gauges in the debug navigator, which help us stay alert to any major issues that don't necessarily cause a crash. Finally, we looked at the View Debugger, which helps us visualize any bugs that we may have in our view hierarchies.
In the next chapter, we'll be looking at some of the tools that Xcode provides for optimizing our app's performance and file size. After we look at optimization, we're going to put some final touches on our app and declare it a finished v1.0 app!