facebook

Chisel ios LLDB debugging tool

August 17, 2014 Mobile , , , ,

Wow and another great release from the Facebook engineering team, this little tool is an excellent addition to the lldb tool.

https://github.com/facebook/chisel

If you are like me, when you debug you usually put a breakpoint in and then print out objects in the lldb console, well now facebook engineering have released chisel, this tool adds extra commands to the lldb. Here a few to name:

Command Description
pviews Print the recursive view description for the key window.
pvc Print the recursive view controller description for the key window.
visualize Open a UIImage, CGImageRef, UIView, or CALayer in Preview.app on your Mac.
fv Find a view in the hierarchy whose class name matches the provided regex.
fvc Find a view controller in the hierarchy whose class name matches the provided regex.
show/hide Show or hide the given view or layer. You don’t even have to continue the process to see the changes!
mask/unmask Overlay a view or layer with a transparent rectangle to visualize where it is.
border/unborder Add a border to a view or layer to visualize where it is.
caflush Flush the render server (equivalent to a “repaint” if no animations are in-flight).)
bmessage Set a symbolic breakpoint on the method of a class or the method of an instance without worrying which class in the hierarchy actually implements the method.
wivar Set a watchpoint on an instance variable of an object.
presponder Print the responder chain starting from the given object.

These tools are really handy, especially if you are battling with Autolayout problems, clearly somebody at Facebook was having problems and decided to make a tool to make life easier, well thanks, its a really good idea!

Installation:

A pretty simple install, make sure you have homebrew installed, then its just a matter of:

brew update
brew install chisel

Then you just need to add a .lldbinit file to your home directory, essentially this is like you .bash_profile, but for xcode/lldb. So this is how i did it.

cd ~

touch .lldbinit

vi .lldbinit

Then once your in vi, just paste in:

command script import /usr/local/opt/chisel/libexec/fblldb.py

Then restart xcode and it should work straight out the box.

 

Facebook’s iOS Infrastructure

April 26, 2014 Mobile No comments , ,

Have a look at this excellent presentation, it shows the approaches and difficulties facebook have had while structuring the facebook app.

Facebook Link

What is interesting is how facebook made all of their major screens as separate libraries, these libraries invoke custom schema calls which then opens those screens. Quite an interesting view and approach to a large scale development application. By separating each major functionality into a library, you can then focus on the core functionality and not have any form of conflict.

 

%d bloggers like this: