Settings

Theme

PonyDebugger: Chrome Developer Tools for Native iOS Apps

corner.squareup.com

278 points by wlue 13 years ago · 45 comments

Reader

jazzychad 13 years ago

I saw a demo of this a couple months ago at a small gathering. I was blown away. Another feature demo'd at the time was the ability to make obj-c calls in the chrome javascript console and have it be interpreted in the app runtime. e.g.

UIApplication.sharedApplication.delegate.navigationController.navigationBar.tintColor = UIColor.redColor;

and the app's navbar changed color. Is this still possible with this release? I haven't been able to try it out at work yet. Thanks for this awesome tool.

  • mikelikespie 13 years ago

    Interactive console support is coming. We need to work out a few kinks before it is ready to go

    • conradev 13 years ago

      Have you heard of Cycript? It's an open source JavaScript-ObjC bridge, maintained by Jay Freeman, the creator of Cydia. It currently supports this interactive console functionality (with tabbed autocomplete!), by injecting into a specified process.

      It would be awesome if you integrated Cycript into this.

      http://cycript.org

      • saurik 13 years ago

        They apparently seem to be using JSCocoa (which I find kind of a surprising choice in comparison to Cycript, but hey: I'm biased ;P).

        (edit:)

        Looking into the debugger protocol some, it seems like it might be irritating to integrate Cycript and have it work with Chrome. (The problem being that it parses the JavaScript on the client and sends over an RPC, do you'd have to drop down to objc_msgSend semantics; one of the things I had disliked about JSCocoa then actually makes it easier to use in this environment: how it kind of munges all of the namespaces together into object properties.)

        The entire idea of mapping the semantics of a native app into the HTML reality of that debugger, however, is somewhat awkward if you want to attack the parts that aren't networking and database (which is what PonyDebugger is currently nailing really well). I was working on something a little more general a while back as part of Cynoptica (mapping all processes to an HTML debugger interface); when I have something I'll hit you up on IRC.

rsbrown 13 years ago

This looks like a really valuable tool to have in the iOS development arsenal.

It also underscores my loathing for cutesy, irreverent naming conventions.

  • mikelikespie 13 years ago

    The name came about because our internal HTTP library is named PonyExpress, and this tool was originally part of it. At least it is google-able, right?

    • Wohlf 13 years ago

      Honestly it's better than another acronym. It's more identifiable and doesn't have other possible meanings.

  • eridius 13 years ago

    There's only so many serious business-y names you can give to something like this. Those names are awfully generic. PonyDebugger is great because it's unique, googleable, and memorable.

  • mikeash 13 years ago

    What would you call it?

scottostler 13 years ago

Awesome, will definitely give this a shot. It's great to see iOS development tools pick up tricks from the web world.

Personally, I can't wait for a Firebug-like tool for live debugging and tweaking of UIView hierarchies.

devinfoley 13 years ago

It seems that the state iOS development is improving at a very rapid pace. I can't wait to try this out.

mikemurray 13 years ago

Thanks for this! The Core-Data Browser will be especially useful for me. Verifying data was correctly stored had been somewhat of a pain before.

Nemisis7654 13 years ago

This looks fantastic. Does anyone know if there is a similar tool for Android?

alexbell 13 years ago

This will improve my life I think, installing now and thank you!

  • mikelikespie 13 years ago

    Glad to hear. If you run into any issues, please file it on the github page. We tried to simplify it a lot, but there are a lot of moving parts and we can improve even more.

se85 13 years ago

Wow, I never thought it would be possible to use the webkit developer tools for a completely different technology stack to such an extent.

Impressive to say the least.

est 13 years ago

This is really cool for my projects, however, are there any other tools that can be used ananlyze other binaries without compiling?

Codhisattva 13 years ago

Impressive looking tool. I hope the intern is getting paid because he's adding a lot of value to Square and the dev community too. (Seems like a chance to plug http://gittip.com/ now!)

  • BHSPitMonkey 13 years ago

    I believe it wouldn't even be legal for an unpaid intern to be used for "actual work", as they're supposed to strictly be involved in mentoring/training activities. Hopefully Square knows that, and wouldn't try to treat its employees unfairly in the first place. They seem like a great company.

    • eridius 13 years ago

      Programming internships are typically paid positions. I can't speak for Square, but every other programming internship I'm aware of (even at other startups like Path) were paid.

    • btown 13 years ago

      Legal or not, it's all too common outside of the tech industry, especially in the creative industry.

    • c_t_montgomery 13 years ago

      Square pays their interns.

  • wlueOP 13 years ago

    Definitely getting paid. Square treats us interns well. :)

boerni1234 13 years ago

It's also possible to inspect HTML/JS on WebView based apps (phonegap)?

devonbleak 13 years ago

Interesting tool.

I've done something like this in the past using Charles or Fiddler and the proxy settings on my iOS device.

tylerc230 13 years ago

What is the advantage of this tool over Charles?

  • eridius 13 years ago

    Charles requires you to proxy your device's networking through your computer, which is annoying to set up, and doubly-so if you need to sniff https. PonyDebugger looks great because it doesn't interfere with the normal networking behavior.

    • e28eta 13 years ago

      Except requiring you to compile it into your app. Presumably you're not including it in every build configuration, but that means you can't run it against just any build.

      I think it only does outgoing requests, but rvictl can also be handy for inspecting iOS network traffic. With a single command on your Mac, it directs device traffic through a network interface on the Mac. Wireshark works great on it.

  • spearo77 13 years ago

    Browsing CoreData stores on the device is very handy.

goggles99 13 years ago

Very cool - but seems like more of a monitor than a debugger (titles are always over-sensationalized I suppose).

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection