function-call-tracing
Instrument C/C++ with -finstrument-functions for execution tracing and Perfetto visualization
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Instrument C/C++ with -finstrument-functions for execution tracing and Perfetto visualization
How to use
Skopiuj pliki trace_instrument.c i trace_to_perfetto.cpp do katalogu projektu.
Zbuduj bibliotekę instrumentacji, uruchamiając gcc -c -fPIC trace_instrument.c -o trace_instrument.o, a następnie gcc -shared trace_instrument.o -o libtrace.so -ldl -lpthread. Skompiluj też konwerter: g++ -O3 -std=c++17 trace_to_perfetto.cpp -o trace_to_perfetto.
Dodaj flagi do procesu budowania projektu: CFLAGS += -finstrument-functions -g oraz LDFLAGS += -L. -ltrace -ldl -lpthread. Jeśli używasz Makefile, umieść te zmienne w odpowiednich sekcjach.
Zbuduj projekt poleceniem make (lub równoważnym dla twojego systemu budowania).
Uruchom program z ustawionym LD_LIBRARY_PATH: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH, następnie ./program. Program automatycznie wygeneruje pliki trace_*.log zawierające logi wywołań funkcji.
Konwertuj logi do formatu Perfetto poleceniem ./trace_to_perfetto trace_*.log -o trace.json, a następnie otwórz plik trace.json w przeglądarce na stronie ui.perfetto.dev, aby zobaczyć interaktywną wizualizację przepływu wykonania.