How to automatically set breakpoints on all methods in Xcode?

前端 未结 3 1608
时光取名叫无心
时光取名叫无心 2020-12-07 10:06

How do I automatically set breakpoints on all methods in Xcode? I want to know how my program works, and which methods invoke when I interact with the user interface.

相关标签:
3条回答
  • 2020-12-07 10:13
    1. Run your app in Xcode.
    2. Press ⌘⌃Y (Debug -> Pause).
    3. Go to the debugger console: ⌘⇧C
    4. Type breakpoint set -r . -s <PRODUCT_NAME> (insert your app's name).

    lldb will answer with something like...

    Breakpoint 1: 4345 locations
    

    Now just press the Continue button.

    breakpoint set is lldb's command to create breakpoints. The location is specified using a regular expression (-r) on function/method names, in this case . which matches any method. The -s option is used to limit the scope to your executable (needed to exclude frameworks).

    When you run your app lldb will now break whenever the app hits a function from your main executable.

    To disable the breakpoints type breakpoint delete 1 (insert proper breakpoint number).

    0 讨论(0)
  • 2020-12-07 10:18

    There is many possibilities but there is no way to set breakpoints only to your functions. You can try:

    breakpoint set -r '\[ClassName .*\]$'

    to add breakpoints to all methods in class

    breakpoint set -f file.m -p ' *- *\('

    to add breakpoints to all methods in file

    You can also use it with many files:

    breakpoint set -f file1.m -f file2.m -p ' *- *\('

    Shortcut:

    br se -f file1.m -f file2.m -p ' *- *\('

    You can add breakpoints to all methods in all classes with some prefix (and it could me only your classes)

    br se -r . -s Prefix

    This line (wzbozon answer):

    breakpoint set -n viewDidLoad

    will set breakpoints on all methods viewDidLoad in all classes.

    I tried but I couldn't set breakpoints only on our own methods.

    0 讨论(0)
  • 2020-12-07 10:34

    In some cases, it is more convenient to set breakpoints only on some of the methods.

    Using LLDB we can put breakpoint on all ViewDidLoad methods by name, for example.

    (lldb) breakpoint set -n ViewDidLoad
    

    Here "-n" means by name.

    Also, we can put breakpoints by selector name:

    (lldb) breakpoint set -S alignLeftEdges:
    

    Here "-S" means by selector.

    0 讨论(0)
提交回复
热议问题