简体   繁体   中英

Xcode 5: Set symbolic breakpoints programatically

Symbolic breakpoins are great, but it's a hassle to manually add then in xcode. Well, after you add one, you can just enable/disable them, but it would be nice to be able to do it in code... something like this:

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

Is this possible?

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

Not in code exactly, but you might be able to create breakpoints during the debug build phase with a shell script (Or have the shell fire python, ruby, whatever… to do the work.)

If you peek inside the .xcodeproj folder, you'll see it has paths like: [projectName].xcodeproj/xcuserdata/[userName].xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist [projectName].xcodeproj/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist

(disclaimer, this example references xcode 5.1.1)

The contents of the files are fairly straightforward:

<?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>

So, by stuffing instances of BreakpointProxy into one of these files, you might apply a library of favorite breakpoints. Duplicates could be a pain, either push and pop the file or check for the instance first.

At worst, if xcode can't be forced to re-read the xcbkptlist files when they are changed by your script, then you could have a script that manipulates the breakpoint files, and then opens the project. (Perhaps overkill, we've gotten into the territory of continuous integration tools like Jenkins now :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM