Miscellaneous Random Exploration Tricks
Finding the correct API in Xcode is tricky, since you’re trying to filter thousands upon thousands of classes and methods.
Using smart lldb regular expressions can greatly aid in finding the item you’re looking for. Sometimes the best place to get a good footing from anywhere in code is to use a Singleton. See if there are any singletons that exist in Xcode that are worth checking out.
While LLDB is paused and attached to Xcode, run the following:
(lldb) i loo -rn "\+\[IDE.*\ shared"
This will look up all class names beginning with “IDE” having a class method that begins with “shared”.
An attractive alternative could be:
(lldb) i loo -rn "\+\[[A-Za-z]*\ [A-Za-z]*\]"
This will print all the class methods with no arguments.
As you saw earlier, you can hunt down classes easily using this Python script given their name. Another popular tool for finding classes is a tool called class-dump; it can be downloaded here. It’s an attractive alternative to the im loo -rn {regex} LLDB command, as it produces much cleaner “header-like” output.
The only downside to this tool is that you have to limit your selection to specific frameworks or plugins, while the image lookup command will look everywhere in all the frameworks & plugins found in Xcode.
Where to Go From Here?
Here’s the completed Rayrolling project from Part 2.
In this article you’ve learned the basics of Dtrace and have explored some advanced LLDB functions available to you.
If you want to learn more about Dtrace, you can read another excellent article about it at obcj.io and get the official documentation on Dtrace here.
In part 3 of this tutorial, you’ll focus on breaking down assembly, and you’ll learn about a neat tool named Cycript.
As always, if you have questions or comments on this tutorial, feel free to join the forum discussion below!