Source file breakpoints
When a compiler compiles a file under debug condition, it creates a map called a line table that maps source lines and columns to compiled addresses. Source breakpoints rely on this table to determine when to pause the process execution.
Line breakpoint is set in a single file
to create one is simply to click in the gutter next to the line you want to pause
New: Column breakpoints
to create one, command-click on the expression to bring up the Actions popover, and then select Set Column Breakpoint
When the breakpoint hits, Xcode uses the line PC to tell you the paused line, it draws a light green highlight over the line
From Xcode 11.4, we also have column PC. The column PC shows you the paused column by drawing a green underscore under an expression.
it lets you know the expression the debugger is going to execute next
Symbolic breakpoints
breakpoints on function names that will pause the process when those functions are executed
useful particularly when you don’t have access to the source files and hence, you can’t compile them with debug info
to create one, click on the + add button at the bottom of the breakpoint navigator, and select Symbolic Breakpoint
LLDB will match the symbol name in your symbolic breakpoint in all the libraries that are loaded in the process, including the system libraries
to restrict the search scope, specify in which module you’re interested in by using the Module field in your break point. A module is a binary or image that can be loaded during execution, including the main binary. (e.g. use
YourAppNamefor the main module)if you’re not sure on the symbol name, you can search for it:
in the source code
in lldb via
image lookup -rn insertSymbolNameHere(-rfor regex,nfor name), you can also specify the module name after the symbol name
Runtime issue breakpoints
A runtime issue is an issue that occurs at runtime that is not as serious as a crash
by default, Xcode doesn’t pause your process, because it can be too disruptive when you are focusing on something else
to pause execution when a runtime issue happens, create a Runtime issue breakpoint
to create a runtime issue breakpoint, click on the + add button at the bottom of the breakpoint navigator, and select Runtime issue Breakpoint
there are different types of runtime issue: for some of them to trigger, you need to enable the corresponding feature in the diagnostics tab of the scheme editor.
