Toolverse
Wszystkie skille

function-call-tracing

autor: gadievron

Śledź każde wywołanie funkcji w C/C++ i wizualizuj przepływ wykonania w Perfetto

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Wyświetlenia
1

O skillu

Narzędzie do instrumentacji kodu C/C++ umożliwiające śledzenie wszystkich wywołań funkcji z podziałem na wątki. Wykorzystuje flagę kompilatora -finstrument-functions do automatycznego rejestrowania wejść i wyjść z funkcji, a następnie konwertuje logi do formatu Chrome JSON kompatybilnego z Perfetto UI. Dzięki temu możesz wizualizować hierarchię wywołań, głębokość stosu i czasy wykonania każdej funkcji. Idealne do debugowania, profilowania wydajności i analizy złożonych przepływów sterowania w dużych projektach C/C++.

Jak używać

  1. Skopiuj pliki trace_instrument.c i trace_to_perfetto.cpp do katalogu projektu.

  2. 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.

  3. 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.

  4. Zbuduj projekt poleceniem make (lub równoważnym dla twojego systemu budowania).

  5. 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.

  6. 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.

Podobne skille