Skip to content
This repository was archived by the owner on Jun 24, 2024. It is now read-only.

Latest commit

 

History

History
37 lines (28 loc) · 2.63 KB

10209.md

File metadata and controls

37 lines (28 loc) · 2.63 KB
contributors
zntfdr

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 YourAppName for 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 (-r for regex, n for 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.