Oparte na hipotezach
Formułuje teorie o przyczynach błędów na podstawie objawów, następnie systematycznie testuje każdą hipotezę aż do znalezienia głównej przyczyny.
Debugowanie to obszar, w którym Claude Code przekształca się z pomocnego asystenta w niezbędnego detektywa. Łącząc głębokie zrozumienie kodu, systematyczną analizę i zdolność wykonywania poleceń diagnostycznych, Claude może tropić błędy, których znalezienie ręcznie zajęłoby godziny. Ten przewodnik ujawnia przepływy debugowania, które przekształcają frustrujące polowania na błędy w systematyczne sesje rozwiązywania problemów.
Claude podchodzi do debugowania jak doświadczony programista:
Oparte na hipotezach
Formułuje teorie o przyczynach błędów na podstawie objawów, następnie systematycznie testuje każdą hipotezę aż do znalezienia głównej przyczyny.
Oparte na dowodach
Zbiera konkretne dowody poprzez logi, ślady stosu i analizę kodu zamiast robienia założeń.
Systematyczna eksploracja
Śledzi ścieżki wykonania, bada zmiany stanu i identyfikuje dokładny punkt, w którym oczekiwane zachowanie różni się od rzeczywistego.
Odtwórz problem
"Widzę ten błąd podczas uruchamiania npm test:TypeError: Cannot read property 'name' of undefinedCzy możesz pomóc mi to zdebugować?"
Zbierz kontekst
"Pokaż mi pełny ślad stosu i testktóry nie przechodzi"
Sformułuj hipotezy
"Jakie są możliwe przyczyny tego błęduna podstawie struktury kodu?"
Testuj systematycznie
"Dodajmy instrukcje console.log aby śledzićprzepływ danych i znaleźć gdzie 'name' staje się undefined"
Zastosuj poprawkę
"Na podstawie tego co znaleźliśmy, zaimplementuj poprawkęktóra obsłuży przypadek undefined"
Zweryfikuj rozwiązanie
"Uruchom testy ponownie aby potwierdzić że poprawka działa"
Jedna z najpotężniejszych funkcji debugowania Claude to analiza logów w czasie rzeczywistym:
# Strumieniuj logi do Claude w celu analizytail -f app.log | claude -p "Monitoruj błędy i anomalie"
# Claude będzie:# - Identyfikować wzorce błędów# - Korelować powiązane zdarzenia# - Sugerować główne przyczyny# - Alarmować o krytycznych problemach
# Znajdź określone wzorce w logachclaude "Przeanalizuj ostatnie 1000 linii app.log pod kątem:- Częstotliwości błędów według typu- Nietypowych wzorców- Oznak degradacji wydajności- Korelacji z ostatnimi wdrożeniami"
# Koreluj logi między serwisamiclaude "Porównaj znaczniki czasu w api.log i database.logaby znaleźć sekwencję zdarzeń prowadzącą do błędu timeout"
Utwórz specjalistyczne polecenia debugowania:
Przeanalizuj dostarczone logi pod kątem: $ARGUMENTS
1. Zidentyfikuj wszystkie typy błędów i ich częstotliwość2. Znajdź wzorce w czasie występowania błędów3. Koreluj błędy z określonymi akcjami użytkowników4. Zidentyfikuj potencjalne główne przyczyny5. Zasugeruj kroki debugowania dla każdego problemu6. Utwórz listę priorytetów na podstawie wpływu
Formatuj wynik jako:- Streszczenie wykonawcze- Szczegółowe odkrycia- Zalecane działania
Claude doskonale radzi sobie z rozwikłaniem złożonych śladów stosu:
Przepływ śladu stosu
"Oto ślad stosu z produkcji:[wklej pełny ślad stosu]
Proszę:1. Zidentyfikuj główną przyczynę2. Prześledzić przez stos wywołań3. Znajdź dokładną linię gdzie błąd się rozpoczyna4. Wyjaśnij co dzieje się na każdym poziomie5. Zasugeruj poprawki"
Dla aplikacji z wieloma językami:
"Ten błąd obejmuje backend Python i frontend JavaScript:[wklej wielojęzyczny ślad stosu]
Prześledzić przepływ błędu przez granice językowe izidentyfikować gdzie następuje korupcja danych"
Claude może analizować błędy UI poprzez zrzuty ekranu:
Przechwyć błąd
Cmd+Ctrl+Shift+4
Win+Shift+S
Udostępnij Claude
"Oto zrzut ekranu pokazujący błąd układu[wklej obraz z Ctrl+V]Przycisk powinien być wyrównany do lewej ale pojawia się na środku"
Otrzymaj ukierunkowaną analizę Claude będzie:
"Komponent React nie przerenderowuje się gdy stan się zmienia.Oto zrzut ekranu React DevTools pokazujący stan[wklej zrzut ekranu]
Zdebuguj dlaczego komponent się nie aktualizuje"
Odtwórz sekwencję zdarzeń prowadzących do błędu:
"Ten błąd zaczął się pojawiać w zeszłym tygodniu.Użyj historii git aby:1. Znaleźć commity z zeszłego tygodnia2. Zidentyfikować zmiany w kodzie uwierzytelniania3. Skorelować z momentem gdy użytkownicy zgłosili problemy4. Wskazać problematyczny commit"
"Utwórz skrypt debugowania który:1. Odtwarza dokładny stan przed błędem2. Przechodzi przez każdą operację3. Loguje zmiany stanu na każdym kroku4. Identyfikuje gdzie stan staje się nieprawidłowy"
"Przeanalizuj logi audytu aby zrozumieć:- Jakie działania podjął użytkownik- Kolejność operacji- Wszelkie równoczesne żądania- Końcowy stan który spowodował błąd"
Analiza profilowania
"Aplikacja działa wolno. Sprofiluj kod i:- Zidentyfikuj wąskie gardła- Znajdź algorytmy O(n²)- Wykryj wycieki pamięci- Zasugeruj optymalizacje"
Optymalizacja zapytań
"Te zapytania do bazy danych przekraczają limit czasu:[wklej logi wolnych zapytań]- Przeanalizuj plany wykonania zapytań- Zidentyfikuj brakujące indeksy- Zasugeruj przepisanie zapytań"
Debugowanie pamięci
"Użycie pamięci stale rośnie. Pomóż mi:- Znaleźć wycieki pamięci- Zidentyfikować referencje cykliczne- Śledzić alokację obiektów- Zaimplementować poprawki"
Debugowanie sieci
"Wywołania API sporadycznie nie powodzą się:- Przeanalizuj logi sieciowe- Sprawdź wzorce timeout- Zidentyfikuj problemy logiki ponawiania- Zasugeruj ulepszenia odporności"
Zidentyfikuj objawy
"Użytkownicy zgłaszają sporadyczne niepowodzenia logowania.Czasami działa ale czasami nie.Podejrzewam warunek wyścigu."
Przeanalizuj współbieżność
"Znajdź wszystkie operacje współbieżne w przepływie logowania.Szukaj dostępu do stanu współdzielonego bez właściwej synchronizacji."
Dodaj instrumentację
"Dodaj logowanie ze znacznikami czasu aby śledzić dokładnąkolejność operacji gdy błąd występuje"
Zaimplementuj poprawkę
"Dodaj właściwe blokowanie/synchronizację aby zapobiecwarunkowi wyścigu"
// Poproś Claude o analizę wycieków"Przejrzyj ten kod pod kątem potencjalnych wycieków pamięci:- Nie usunięte listenery zdarzeń- Domknięcia trzymające referencje- Zależności cykliczne- Duże obiekty w cache'ach"
// Claude zapewnia konkretne poprawki:// - Dodaj czyszczenie w useEffect// - Zaimplementuj WeakMap dla cache'ów// - Przerwij referencje cykliczne
"Ta paginacja pokazuje 11 elementów zamiast 10.Zdebuguj błąd off-by-one w obliczeniu."
// Claude będzie:// - Śledzić warunki graniczne// - Sprawdzać iteracje pętli// - Weryfikować indeksowanie tablic// - Naprawiać błędy fence-post
Wzorzec odtwarzania błędu
"Utwórz minimalny przypadek testowy który odtwarza ten błąd:- Usuń niepowiązany kod- Wyizoluj komponent który nie działa- Spraw aby zawodził konsekwentnie- Udokumentuj oczekiwane vs rzeczywiste zachowanie"
"Ten test nieoczekiwanie nie przechodzi:[wklej nieudany test]
Zdebuguj poprzez:1. Dodanie console.log do śledzenia wykonania2. Sprawdzenie konfiguracji mocków3. Weryfikację assertów4. Uruchomienie w izolacji"
"Test integracyjny przechodzi lokalnie ale nie w CI:- Porównaj środowiska- Sprawdź problemy z czasem- Zweryfikuj zależności zewnętrzne- Dodaj wynik debugowania"
"Ten test losowo nie przechodzi w 20% przypadków:- Zidentyfikuj niedeterministyczne zachowanie- Dodaj jawne oczekiwania gdzie potrzeba- Mockuj operacje zależne od czasu- Zapewnij właściwe czyszczenie"
Zbierz dowody bez wpływu
"Przeanalizuj logi produkcyjne bez uruchamiania poleceńktóre mogłyby wpłynąć na użytkowników"
Utwórz lokalne odtworzenie
"Na podstawie danych produkcyjnych, utwórz lokalneśrodowisko które odtwarza problem"
Testuj poprawkę na stagingu
"Wdróż poprawkę na staging i zweryfikuj zdanymi podobnymi do produkcyjnych"
Monitoruj wdrożenie
"Utwórz alerty monitorowania dla określonegowzorca błędu przed wdrożeniem poprawki"
Utwórz potężne skróty debugowania:
Zdebuguj błąd: $ARGUMENTS
1. Przeszukaj bazę kodu pod kątem komunikatu błędu2. Znajdź wszystkie ścieżki kodu które mogą go wywołać3. Przeanalizuj ostatnie zmiany w tych plikach4. Sprawdź podobne problemy z przeszłości5. Zaproponuj poprawki z wyjaśnieniami
Automatyzuj przepływy debugowania z hookami:
{ "hooks": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "if [[ \"$CLAUDE_TOOL_OUTPUT\" =~ error ]]; then echo '🔍 Wykryto błąd - uruchamiam diagnostykę...'; fi" } ] } ]}
Antywzorce debugowania do unikania
❌ Zmienianie wielu rzeczy naraz - Testuj jedną hipotezę na raz ❌ Ignorowanie komunikatów błędów - Czytaj je uważnie, często zawierają odpowiedź ❌ Założenia bez weryfikacji - Zawsze potwierdź swoje teorie dowodami ❌ Debugowanie najpierw w produkcji - Odtwarzaj lokalnie gdy to możliwe ❌ Nie sprawdzanie podstaw - Zweryfikuj konfigurację, środowisko i zależności ❌ Pomijanie kroku odtworzenia - Zawsze odtwarzaj przed próbą naprawy
Udokumentuj swoje wzorce debugowania:
# Dodatki do CLAUDE.md dla debugowania
## Proces debugowania1. Zawsze utwórz test który odtwarza problem2. Używaj naszego standardowego formatu logowania3. Sprawdź najpierw te częste przyczyny: - Zmienne środowiskowe - Połączenia z bazą danych - Timeouty API - Unieważnienie cache
## Polecenia debugowania- `npm run debug` - Uruchom z włączonym debugowaniem- `npm run analyze:logs` - Uruchom analizę logów- `npm run trace` - Włącz szczegółowe śledzenie
Po naprawieniu błędów, ucz się z nich:
"Utwórz dokument post-mortem dla tego błędu:- Analiza głównej przyczyny- Oś czasu zdarzeń- Co poszło nie tak- Jak zapobiec podobnym problemom- Potrzebne ulepszenia monitorowania"
Debugowanie z Claude Code przekształca jedną z najbardziej frustrujących aktywności programistycznych w systematyczny, niemal przyjemny proces. Łącząc zrozumienie kodu przez Claude, rozpoznawanie wzorców i zdolność wykonywania poleceń diagnostycznych, możesz tropić błędy szybciej i bardziej niezawodnie niż kiedykolwiek wcześniej. Kluczem jest podejście metodyczne - zbieranie dowodów, formułowanie hipotez, systematyczne testowanie i uczenie się z każdego błędu aby zapobiec przyszłym. Dzięki tym przepływom spędzisz mniej czasu na polowaniu na błędy, a więcej na budowaniu funkcji.