rr-debugger
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
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ć
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.
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.
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.
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).
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.
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.