Simple tool for viewing Linux perf traces in IDA Pro.
If you don't have Rust installed yet, you can learn how to do so here or run the following command if you believe you are as lucky as me.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rust is required to compile the preprocessing util for the perf trace since doing that work in IDA Python would likely have made it impossible to import real world sized traces that tend to be many gigabytes in size.
Use one of the following approaches.
cargo install --git https://github.com/zhaopengoog/idaperf.git
or
git clone https://github.com/zhaopengoog/idaperf.git
cd idaperf
cargo install --path .
perf record -o ./perf.data -- ./your-app-here
perf script --no-demangle -i ./perf.data -F ip,sym,symoff,dso,event | idaperf your-binary-name-here > dump.csv
The your-binary-name-here
string doesn't have to be the whole module/binary name,
it is sufficient to provide a substring that uniquely filters for symbols
in your module/binary.
After that, you can import the reduced dump into IDA as follows:
- Load your module into IDA
File -> Script file
- Select the
idapy-import-perf-data.py
from this repo - Select the
dump.csv
you previously created - Done!