Function Call Tracing
Instrument C/C++ with -finstrument-functions for execution tracing and Perfetto visualisation
How do I install this agent skill?
npx skills add https://github.com/gadievron/raptor --skill function-call-tracingIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is safe. It contains standard utility code and instructions for profiling and tracing C/C++ applications using the built-in compiler function instrumentation feature (-finstrument-functions) and formatting logs for visualization in Perfetto.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerfail
3/3 files flagged
What does this agent skill do?
Function Call Tracing
Purpose
Trace all function calls in C/C++ programs with per-thread logs and Perfetto visualization.
Components
1. Instrumentation Library (trace_instrument.c)
Captures function entry/exit, writes per-thread logs.
Build:
gcc -c -fPIC trace_instrument.c -o trace_instrument.o
gcc -shared trace_instrument.o -o libtrace.so -ldl -lpthread
2. Perfetto Converter (trace_to_perfetto.cpp)
Converts logs to Chrome JSON for Perfetto UI.
Build:
g++ -O3 -std=c++17 trace_to_perfetto.cpp -o trace_to_perfetto
Usage
Step 1: Add to Build
CFLAGS += -finstrument-functions -g
LDFLAGS += -L. -ltrace -ldl -lpthread
Step 2: Build Target
make
Step 3: Run
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./program
# Creates trace_<tid>.log files
Step 4: Convert to Perfetto
./trace_to_perfetto trace_*.log -o trace.json
# Open trace.json in ui.perfetto.dev
Log Format
[seq] [timestamp] [dots] [ENTRY|EXIT!] function_name
[0] [1.000000000] [ENTRY] main
[1] [1.000050000] . [ENTRY] helper
[2] [1.000100000] . [EXIT!] helper
[3] [1.000150000] [EXIT!] main
- Dots indicate call depth
- Timestamp in seconds.nanoseconds
- One log file per thread
When User Requests Tracing
Steps
- Copy
trace_instrument.candtrace_to_perfetto.cppto project - Build instrumentation library
- Add
-finstrument-functionsto CFLAGS - Add
-L. -ltrace -ldl -lpthreadto LDFLAGS - Build project
- Set
LD_LIBRARY_PATHand run - Convert logs:
./trace_to_perfetto trace_*.log -o trace.json - Provide link to ui.perfetto.dev
Build System Detection
Makefile: Add flags conditionally
ENABLE_TRACE ?= 0
ifeq ($(ENABLE_TRACE),1)
CFLAGS += -finstrument-functions -g
LDFLAGS += -L. -ltrace -ldl -lpthread
endif
CMake: Add option
option(ENABLE_TRACE "Enable tracing" OFF)
if(ENABLE_TRACE)
add_compile_options(-finstrument-functions -g)
link_libraries(trace dl pthread)
endif()
Output
- trace_<tid>.log: Per-thread text logs
- trace.json: Perfetto Chrome JSON format
- View at https://ui.perfetto.dev
Perfetto JSON Format
Function ENTRY → "B" (begin) event Function EXIT! → "E" (end) event All threads aligned by timestamp in single file.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/gadievron/raptor/function-call-tracing">View Function Call Tracing on skillZs</a>