2013-02-25 24 views
11

我正在解开意大利面代码,并将其作为一项练习,正在通过应用程序从其启动中穿过,并突破applicationDidFinishLaunching并逐步进入。如何在Xcode 4.6中打破所有符号化代码?

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

我正在寻找在我(或我的前任)编写的每种方法和函数的第一行(或每行)上设置断点的实用等价物。

是否有一些LLDB伏都教会这样做?

回答

7

有您所有的模块设置断点的简单方法的功能,不包括任何其他的共享库(苹果框架)的,假设你的产品/模块被称为‘MyApp的’,这将是:

breakpoint set -s MyApp -r . 

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

如果您倾向于为您的类加上前缀,那么您可以通过仅打破属于具有该前缀的类的一部分的函数来缩小结果范围。假设你的前缀是'MA',你可以这样做:

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

它应该覆盖你的大部分代码。

+0

优秀的答案,谢谢你。为了引用其他人,'-s'将断点限制为共享库,'-r'表示正则表达式以匹配打破的功能。 – Swizzlr 2013-02-26 10:56:19

+0

如果有一种方法可以忽略综合属性访问器,则主要奖励点。 – Swizzlr 2013-02-26 11:09:44