Finding faults.
WHAT THE DEBUGGER PROVIDES
Breakpoints, including conditional and symbolic ones Stepping through execution Inspecting variables Evaluating expressions The view hierarchy, inspected visually The memory graph, showing retained objects
WHAT CONDITIONAL BREAKPOINTS SOLVE
Pausing only when a condition holds, inside code running thousands of times.
WHAT SYMBOLIC BREAKPOINTS DO
Break on a named method anywhere, including in system frameworks.
WHAT THAT IS USEFUL FOR
Catching exceptions and constraint failures at the point they occur.
WHAT TO ADD TO EVERY PROJECT
A breakpoint on exceptions.
WHY
It stops at the cause rather than after unwinding.
WHAT THE VIEW HIERARCHY INSPECTOR SHOWS
The actual rendered hierarchy, with each view's properties and constraints.
WHAT THE MEMORY GRAPH SHOWS
What is retaining an object, which is how retain cycles are found.
WHAT THE RUNTIME CHECKS PROVIDE
Detection of memory misuse, threading violations, and undefined behaviour.
WHAT TO ENABLE DURING DEVELOPMENT
The main thread checker and the address sanitiser.
WHY
They catch damaging faults immediately rather than intermittently.