Development
Building & Running the idb
cliβ
The idb
cli is python based and can simply be built using pip
pip3 install .
Building & Running the idb_companion
β
This is a native macOS executable, built via Xcode.
Firstly, there are system level build dependencies that needed, these can be installed via homebrew:
# Tap for grpc
brew tap grpc/grpc
# The grpc compiler is used to generate C++ bindings from the idb.proto definition
brew install grpc
# cocoapods is needed to resolve dependencies for the Xcode project
brew install cocoapods
# cocoapods is used to resolve the grpc runtime library for the companion
# This must be run from the root of the idb repository to use the appropriate Podfile
pod install
This will open an Xcode project that you can build and run:
open idb_companion.xcworkspace
After opening the Xcode project you will need to add a --udid
argument for launch.
- Get the UDID of either your device or simulator
- Window -> Devices and Simulators
- Select the device or simulator you care about
- Copy the value in the
Identifier
section of the header
- Project -> Scheme -> Edit Scheme (or
cmd + <
) - Run -> Arguments
- Click the
+
under theArguments Passed on Launch
section - Enter
--udid <UDID copied above>
- Run the
idb_companion
target onMy Mac
Once idb_companion
has launched, it will output the TCP port upon which the companion has bound to stdout
:
{"grpc_port":10882}
By default this port is 10882
, it can be bound on a random port with --port 0
or a port of your choosing. You'll now be able to direct idb
commands against this companion with the IDB_COMPANION
environment variable passed to the cli:
$ IDB_COMPANION=localhost:10882 idb describe
As long as you prefix this environment variable before all commands, you'll be able to run commands against the companion that you're currently debugging within Xcode.