Last updated:
0 purchases
cygtrace 0.0.1
cygtrace
gcc instrumentation based tracer for c/c++/pybind11
Installation
Requirements:
gcc
cmake
python3 with pybind11 (optional)
Python package
pip install .
System-wise library
To build/install the library:
mkdir build
cd build
cmake ..
make
sudo make install # to install the library in /usr/local/lib
To build the examples:
cd examples
mkdir build
cd build
cmake ..
make
Usage
With Python script
Run program/script/command with tracer
cygtrace ./path/to/executable
cygtrace python3 ./path/to/script.py
Demangle json trace file
cygtrace -d -f trace.json
Get compiling parameters (gcc)
gcc example.c $(cygtrace -I -L -p)
When compiling dynamically loaded libraries (e.g., pybind11), add -m flag (disables libcygtrace linking)
g++ example.cpp $(cygtrace -I -L -p -m)
Manual instructions
To enable tracing in pybind11 code, add these to the compiler args (gcc):
-finstrument-functions -Wl,--export-dynamic
for c/cpp programs, also link the cygtrace library:
-finstrument-functions -Wl,--export-dynamic -lcygtrace
To enable tracing in python (pybind11), start the python interpreter like this (assuming library installed in /usr/local/lib):
LD_PRELOAD=/usr/local/lib/libcygtrace.so python3 xxx.py
Notes
To view JSON-formatted profiling results, go to chrome://tracing or Perfetto UI
the names of functions with static keyword or within anonymous namespace are unobtainable in the tracer (appear as "<unknown>")
Troubleshooting
CMake could not find pybind11
pip3 install "pybind11[global]"
"error while loading shared libraries: libcygtrace.so: cannot open shared object file: No such file or directory"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.