idb cli is python based and can simply be built using
pip3 install .
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 grpcbrew tap grpc/grpc# The grpc compiler is used to generate C++ bindings from the idb.proto definitionbrew install grpc# cocoapods is needed to resolve dependencies for the Xcode projectbrew 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 Podfilepod install
This will open an Xcode project that you can build and run:
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
Identifiersection of the header
- Project -> Scheme -> Edit Scheme (or
cmd + <)
- Run -> Arguments
- Click the
Arguments Passed on Launchsection
--udid <UDID copied above>
- Run the
idb_companion has launched, it will output the TCP port upon which the companion has bound to
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.