rr-debugger
Deterministic debugging with rr record-replay. Use when debugging crashes, ASAN faults, or when reverse execution is needed. Provides reverse-next, reverse-step, reverse-continue commands and crash trace extraction.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Deterministic debugging with rr record-replay. Use when debugging crashes, ASAN faults, or when reverse execution is needed. Provides reverse-next, reverse-step, reverse-continue commands and crash trace extraction.
How to use
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.