blog

Image of code from markus-spiske

SuperDebugger – a console for debugging your iOS app

by

In my last post I took a look at PonyDebugger, a remote debugging toolkit for inspecting the Core Data Managed Object Contexts, view hierarchies, and network activity of your iOS app. At the moment PonyDebugger offers a read-only view of your app, with write access planned for a future update. Not long afterwards I was listening to an episode of the NSNorth podcast with Jason Brennan (formerly of Shopify, now working on the NYT’s iOS apps) about SuperDebugger, which is another remote iOS debugger that makes use of Philippe Mougin’s F-Script ported to iOS along with a OS X shell for remotely interacting with the iOS app.

A demo from the SuperDebugger site.

I’d used F-Script to debug Mac OS X apps before, so was anxious to see how well it worked on iOS. I followed the instructions in the ReadMe on GitHub and had SuperDebugger up and running in about 15 minutes. It’s really no harder to setup than PonyDebugger. The ReadMe has some background and basic usage of F-Script and you can find out more about it on Mougin’s site.

To try it out I created a simple demo project that you can find on GitHub and setup with:

git clone https://github.com/stevenhuey/SuperDebuggerDemo.git
cd SuperDebuggerDemo
git submodule update --init --recursive
open Frameworks/superdb/

As described in the SuperDebugger ReadMe you’ll want to build the Super Debug shell app for OS X first. Once you’ve got that running you can build and run the sample app on your iOS device or the simulator.

Here’s a quick look at running my sample app in the iPhone Simulator alongside the SuperDebugger console.

I’m looking forward to trying SuperDebugger and PonyDebugger out in tandem, curious to see if JSTalk will run on iOS as an alternative to F-Script, and what approach PonyDebugger takes to allow console or some other interactive access as well. Happy debugging!

+ more

Accurate Timing

Accurate Timing

In many tasks we need to do something at given intervals of time. The most obvious ways may not give you the best results. Time? Meh. The most basic tasks that don't have what you might call CPU-scale time requirements can be handled with the usual language and...

read more