【问题标题】:How to automatically set breakpoints on all methods in Xcode?如何在 Xcode 中的所有方法上自动设置断点?
【发布时间】:2012-03-05 17:18:22
【问题描述】:

如何在 Xcode 中的所有方法上自动设置断点? 我想知道我的程序是如何工作的,以及当我与用户界面交互时会调用哪些方法。

【问题讨论】:

    标签: xcode breakpoints


    【解决方案1】:
    1. 在 Xcode 中运行您的应用程序。
    2. 按 ⌘⌃Y(调试 -> 暂停)。
    3. 转到调试器控制台:⌘⇧C
    4. 输入breakpoint set -r . -s <PRODUCT_NAME>(插入您的应用名称)。

    lldb 会回答类似...

    Breakpoint 1: 4345 locations
    

    现在只需按“继续”按钮。

    breakpoint set 是 lldb 创建断点的命令。该位置是在函数/方法名称上使用正则表达式 (-r) 指定的,在这种情况下,. 匹配任何方法。 -s 选项用于限制可执行文件的范围(需要排除框架)。

    现在,当您运行您的应用程序时,只要应用程序从您的主可执行文件中访问一个函数,lldb 就会中断。

    要禁用断点类型breakpoint delete 1(插入正确的断点号)。

    【讨论】:

    • 感谢您的详细解释。我试图显示断点列表并且它有效,但是如何使用 lldb 在所有方法上设置断点?
    • 就是上面描述的第三点:如果你的应用名为“MyFooApp”,在调试器控制台输入breakpoint set -r . -s MyFooApp
    • 感谢它现在可以工作了(这是我的错误 - 我在输入项目名称时犯了错误:) 抱歉)。非常感谢 - 效果很好!
    • 这会更新代码编辑器中显示的断点吗?我想在看到断点后删除它们...本质上是在运行代码覆盖率测试
    • 是否可以仅对特定的文件组或类执行此操作?例如,我只想要我的类,而不是导入的/CocoaPod 文件。
    【解决方案2】:

    在某些情况下,只在某些方法上设置断点会更方便。

    例如,使用 LLDB,我们可以按名称在所有 ViewDidLoad 方法上放置断点。

    (lldb) breakpoint set -n ViewDidLoad
    

    这里的“-n”表示名字。

    另外,我们可以通过选择器名称放置断点:

    (lldb) breakpoint set -S alignLeftEdges:
    

    这里的“-S”表示选择器。

    【讨论】:

      【解决方案3】:

      有很多可能性,但没有办法只为你的函数设置断点。你可以试试:

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

      为类中的所有方法添加断点

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

      为文件中的所有方法添加断点

      您还可以将它与许多文件一起使用:

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

      快捷方式:

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

      你可以给所有类中的所有方法添加断点,并带有一些前缀(它只能是你的类)

      br se -r . -s Prefix

      这一行(wzbozon 回答):

      breakpoint set -n viewDidLoad

      将在所有类中的所有方法viewDidLoad 上设置断点。

      我试过了,但我不能只在我们自己的方法上设置断点。

      【讨论】:

        猜你喜欢
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 2012-11-28
        相关资源
        最近更新 更多