Xcode 5:以编程方式设置符号断点

时间:2013-12-15 16:29:57

标签: ios objective-c xcode

符号断点很棒,但是在xcode中手动添加是很麻烦的。好吧,在你添加一个之后,你可以启用/禁用它们,但是能够在代码中执行它会很好......就像这样:

#if DEBUG
    SetBreakPointForFunction([Myclass myfunction], BreakPointActionPlaySound);
#endif

这可能吗?

https://developer.apple.com/library/ios/recipes/xcode_help-breakpoint_navigator/articles/setting_breakpoint_actions_and_options.html

1 个答案:

答案 0 :(得分:0)

不完全是代码,但是你可以在调试构建阶段使用shell脚本创建断点(或者让shell使用python,ruby,等等......来完成工作。)

如果你偷看.xcodeproj文件夹,你会看到它有如下路径: [项目] .xcodeproj / xcuserdata / [用户名] .xcuserdatad / xcdebugger / Breakpoints_v2.xcbkptlist [项目] .xcodeproj / xcshareddata / xcdebugger / Breakpoints_v2.xcbkptlist

(免责声明,此示例引用xcode 5.1.1)

文件内容相当简单:

<?xml version="1.0" encoding="UTF-8"?>
<Bucket
   type = "4"
   version = "2.0">
   <Breakpoints>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            symbolName = "-[ActivitySpanner thresholdTimePassed]"
            moduleName = "">
         </BreakpointContent>
      </BreakpointProxy>
   </Breakpoints>
</Bucket>

因此,通过将BreakpointProxy的实例填充到其中一个文件中,您可以应用最喜欢的断点库。重复可能很痛苦,无论是推送还是弹出文件,还是先检查实例。

在最坏的情况下,如果xcode被脚本更改后不能强制重新读取xcbkptlist文件,那么您可以使用一个脚本来操作断点文件,然后打开项目。 (也许是矫枉过正,我们现在已经进入了像Jenkins这样的持续集成工具领域:)