【问题标题】:How can I break on all symbolicated code in Xcode 4.6?如何打破 Xcode 4.6 中的所有符号代码?
【发布时间】:2013-02-11 00:12:12
【问题描述】:

我正在解开意大利面条式代码,作为练习,我正在从应用程序启动开始浏览应用程序,突破 applicationDidFinishLaunching 并逐步进入。

当第一个方法返回时,我会进入程序集。知道什么时候跨过去,什么时候跨进去是一件很痛苦的事。我希望调试器暂停所有符号化代码(即我可以在 Xcode 中看到的代码 - 也许这被称为“用户”代码?基本上,非框架/库代码。),但我不关心 Apple 的内部方法。

我正在寻找在我(或我的前任)编写的每个方法和函数的第一行(或每一行)设置断点的实际等效项。

是否有一些 LLDB 巫毒可以做到这一点?

【问题讨论】:

    标签: ios objective-c xcode debugging lldb


    【解决方案1】:

    假设您的产品/模块名为“MyApp”,那么有一种简单的方法可以在所有模块的函数(不包括任何其他共享库(Apple 框架)的函数)上设置断点:

    breakpoint set -s MyApp -r .
    

    但是,这包含您静态链接到的任何库,这可能意味着您引入的任何库,因为 App Store 中不允许动态链接。

    如果您倾向于为您的类添加前缀,您可以通过仅中断作为具有该前缀的类的一部分的函数来缩小结果范围。假设您的前缀是“MA”,您可以执行以下操作:

    breakpoint set -s MyApp -r ^[^A-Za-z]*MA
    

    这应该涵盖您的大部分代码。

    【讨论】:

    • 很好的答案,谢谢。供参考,-s 将断点限制为共享库,-r 指示正则表达式以匹配要中断的函数。
    • 如果有办法忽略合成属性访问器,将获得主要奖励。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多