Toolverse
Wszystkie skille

rr-debugger

autor: gadievron

Debuguj awarie i błędy pamięci z pełnym odtwarzaniem wstecz — przejdź do źródła problemu krok po kroku.

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Backend
Wyświetlenia
4

O skillu

rr-debugger to umiejętność do debugowania deterministycznego z możliwością odtwarzania i wykonywania wstecz. Nagrywasz uruchomienie programu, a następnie odtwarzasz je w gdb z dostępem do poleceń reverse-next, reverse-step i reverse-continue. Idealne do analizy awarii, błędów ASAN i sytuacji, w których musisz cofnąć się w czasie wykonania. Pozwala na ekstrakcję śladów awarii i inspekcję zmiennych w dowolnym punkcie programu.

Jak używać

  1. Zainstaluj rr na swoim systemie (dostępne w większości menedżerów pakietów Linux). Umiejętność rr-debugger wymaga dostępu do narzędzia rr oraz gdb.

  2. Nagrywaj uruchomienie programu poleceniem rr record, podając ścieżkę do programu i jego argumenty. Na przykład: rr record ./moj_program arg1 arg2. rr zapisze wszystkie zdarzenia systemowe i stany pamięci potrzebne do deterministycznego odtworzenia.

  3. Odtwórz nagranie poleceniem rr replay. Otworzy się interfejs gdb z dostępem do poleceń odtwarzania wstecz. Możesz teraz poruszać się zarówno do przodu, jak i do tyłu w historii wykonania.

  4. Aby znaleźć źródło awarii, użyj reverse-continue (lub rc) aby wrócić do poprzedniego punktu przerwania, lub reverse-next (rn) aby cofnąć się o jeden krok nad wywołaniami funkcji. Jeśli potrzebujesz wejść wewnątrz funkcji wstecz, użyj reverse-step (rs).

  5. Po zlokalizowaniu interesującego cię obszaru kodu, przejdź do przodu za pomocą standardowych poleceń next i step, obserwując zmienne za pomocą print, info locals lub info args. Możesz też badać pamięć poleceniem x z odpowiednim formatem.

  6. W przypadku błędów ASAN wyświetl stos (bt), przejdź do ostatniej ramki aplikacji (up), ustaw punkt przerwania na tej lokalizacji (break *$pc), a następnie użyj reverse-continue aby wrócić do instrukcji, która spowodowała błąd. Następnie przejdź do przodu, aby zobaczyć sekwencję zdarzeń prowadzącą do naruszenia.

Podobne skille