Need help with cargo-instruments?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

cmyr
274 Stars 8 Forks MIT License 38 Commits 6 Opened issues

Description

A cargo plugin to generate Xcode Instruments trace files

Services available

!
?

Need anything else?

Contributors list

# 7,309
Rust
Python
crates
filesys...
34 commits
# 41,027
opam
pinned-...
asdf
Angular
1 commit
# 404,935
Emacs
nord
emacs-l...
Python
1 commit
# 250,085
Rust
Shell
pdf-doc...
Electro...
1 commit
# 681,973
Rust
cargo
profili...
1 commit

cargo-instruments

Easily generate Instruments traces for your rust crate.

cargo-instruments
is the glue between cargo and Xcode's bundled profiling suite. It allows you to easily profile any binary in your crate, generating files that can be viewed in the Instruments app.

Instruments Time Profiler Instruments System Trace

Installation

brew

brew install cargo-instruments

Building from Source

First, ensure that you are running macOS, with Cargo, Xcode, and the Xcode Command Line Tools installed; then install with

cargo install cargo-instruments

Use

basic usage

cargo-instruments
requires a binary target to run. By default, it will try to build the current crate's
main.rs
. You can specify an alternative binary by using the
--bin
or
--example
flags, or a benchmark target with the
--bench
flag.

Generate a new trace file (by default saved in

/target/instruments
)
$ cargo instruments [-t template] [--bin foo | --example bar] [--out out_file]

Open the file in Instruments.app (or pass

--open
to open automatically)
$ open target/instruments/my_bin_YYYY-MM-DD-THH:MM:SS.trace

Profiling application in release mode

When profiling the application in release mode the compiler doesn't provide debugging symbols in the default configuration.

To let the compiler generate the debugging symbols even in release mode you can append the following section in your

Cargo.toml
.
[profile.release]
debug = true

Templates

Instruments has the concept of 'templates', which describe sets of dtrace probes that can be enabled.

cargo-instruments
will use the "Time Profiler", which collects CPU core and thread use.

examples

# View all args and options
$ cargo instruments --help
# profile the main binary with the Allocations template
$ cargo instruments -t alloc
# profile examples/my_example.rs, with the default template,
# for 10 seconds, and open the trace when finished
$ cargo instruments --example my_example --limit 10000 --open

Resources

Instruments Help

WWDC videos

The best source of information about Instruments is likely the various WWDC sessions over the years:

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.