Przejdź do głównej zawartości

Wzorce debugowania i odzyskiwania po błędach

Debugowanie to już nie dodawanie instrukcji print ręcznie i wpatywanie się w stack trace. Z pomocą AI Cursor możesz diagnozować problemy w minuty, które tradycyjnie zajęłyby godziny, automatycznie naprawiać błędy, a nawet zapobiegać błędom zanim się pojawią.

Najpotężniejszy wzorzec debugowania: pozwól AI dodać logowanie, uruchomić kod, przeanalizować output i automatycznie naprawić problemy.

  1. AI dodaje strategiczne logowanie

    Agent: Dodaj logowanie aby zrozumieć dlaczego sesje użytkowników wygasają
  2. Uruchom kod z instrumentacją

    Agent wykonuje kod, przechwytuje cały output logów
  3. AI analizuje logi

    Na podstawie logów: "Sesje wygasają bo cookie brakuje
    flagi Secure na połączeniach HTTPS"
  4. Automatyczne generowanie naprawy

    Agent naprawia problem i weryfikuje rozwiązanie
Użytkownik: Przetwarzanie płatności czasami zawodzi
Agent: Dodam strategiczne logowanie aby zdiagnozować ten problem.
[Dodaje logowanie wokół wywołań API płatności, transakcji bazy danych,
i obsługi błędów]
Uruchamiam przepływ płatności 10 razy aby wychwycić wzorzec...
Analiza: Problem występuje gdy:
1. Pula połączeń bazy danych jest wyczerpana (8/10 awarii)
2. Osiągnięto limit częstości API płatności (2/10 awarii)
Naprawię oba problemy:
- Dodanie logiki retry dla puli połączeń
- Implementacja exponential backoff dla wywołań API
[Implementuje naprawy]
[Uruchamia 50 więcej testów - 100% wskaźnik sukcesu]
Sporadyczne awarie są teraz rozwiązane.

Użyj @Linter-errors aby automatycznie naprawić problemy jakości kodu:

Błędy TypeScript

Agent: Uruchom tsc i napraw wszystkie błędy TypeScript

Z trybem YOLO Agent iteruje aż build przejdzie

Problemy ESLint

Agent: Napraw wszystkie ostrzeżenia i błędy ESLint

AI rozumie intencję za zasadami lint

Podpowiedzi typów Python

Agent: Dodaj brakujące podpowiedzi typów na podstawie outputu mypy

Kompleksowa bezpieczeństwo typów bez ręcznej pracy

Format i styl

Agent: Uruchom prettier i napraw całe formatowanie

Spójny styl kodu automatycznie utrzymywany

Okno terminala
# Utwórz komendę pre-PR która uruchamia wszystkie sprawdzenia
{
"scripts": {
"pre-pr": "npm run lint && npm run test && npm run build"
}
}

Następnie po prostu:

Agent: Uruchom npm run pre-pr i napraw wszelkie problemy aż przejdzie

Połącz Cursor ze śledzeniem błędów produkcyjnych dla automatycznego rozwiązywania:

Użytkownik: Sprawdź Sentry pod kątem ostatnich błędów i stwórz naprawy
Agent: Analizuję dashboard Sentry...
Znaleziono 3 krytyczne problemy:
1. NullPointerException w UserService.getProfile() - 147 wystąpień
2. Timeout API w PaymentGateway - 23 wystąpienia
3. Nieprawidłowy format daty w ReportGenerator - 89 wystąpień
Zaczynam od najczęstszego problemu:
[Otwiera UserService.java]
Null pointer występuje gdy user.getPreferences() zwraca null
ale nie sprawdzamy przed wywołaniem .getTheme().
Tworzę naprawę z bezpieczeństwem null:
  1. Wykrywanie błędów - monitorowanie systemów śledzenia błędów
  2. Analiza głównej przyczyny - AI analizuje stack trace i wzorce
  3. Reprodukcja - Agent próbuje odtworzyć lokalnie
  4. Generowanie naprawy - tworzy celowaną naprawę głównej przyczyny
  5. Weryfikacja - testuje czy naprawa zapobiega powtórzeniu
  6. Tworzenie PR - składa naprawę do przeglądu

Użyj bug finder Cursor przed commitowaniem:

Komenda: Ctrl+Shift+P → "bug finder"
Agent analizuje twoje zmiany i identyfikuje:
- Potencjalne wyjątki null pointer
- Brakującą obsługę błędów
- Luki w zabezpieczeniach
- Problemy wydajnościowe
- Błędy logiki
Wyniki Bug Finder:
1. 🔴 Krytyczne: Potencjalne SQL injection w UserQuery.java:45
- Input użytkownika bezpośrednio konkatenowany do zapytania
- Sugerowana naprawa: Używaj parametryzowanych zapytań
2. 🟡 Ostrzeżenie: Brakujące sprawdzenie null w calculateTotal():
- Parametr items może być null
- Sugerowana naprawa: Dodaj klauzulę guard null
3. 🟡 Ostrzeżenie: Nieefektywna pętla w processOrders():
- Wykryto wzorzec zapytań N+1
- Sugerowana naprawa: Używaj batch loading
Agent: Czy chcesz żebym naprawił te problemy?

AI może identyfikować i naprawiać wąskie gardła wydajności:

Agent: Profiluj wolny endpoint i zidentyfikuj wąskie gardła
Uruchamiam profiler wydajności...
Wyniki:
- 45% czasu w zapytaniach bazy danych
- 30% czasu w serializacji JSON
- 15% czasu w logice biznesowej
- 10% inne
Główne wąskie gardło: Brakujący indeks bazy danych na user_id
Agent: Porównaj działającą wersję (commit abc123) z zepsutą wersją
aby zidentyfikować co spowodowało regresję
Analizuję różnice...
Problem został wprowadzony w commit def456:
- Zmieniono przepływ uwierzytelniania
- Usunięto krok walidacji sesji
- To powoduje natychmiastowe wylogowanie przy odświeżeniu strony
Cofam problematyczną zmianę i dodaję test aby zapobiec regresji
Agent: Debuguj dlaczego zamówienia zawodzą w architekturze mikroserwisów
Śledzenie przepływu żądania:
1. ✓ Order Service odbiera żądanie
2. ✓ Inventory Service rezerwuje przedmioty
3. ✗ Payment Service timeout
4. ✗ Order Service rollback zawodzi
Główna przyczyna: Pula połączeń bazy danych Payment Service wyczerpana
Drugorzędny problem: Transakcja rollback brakuje obsługi timeout
Naprawiam oba problemy...
Agent: Ten test przechodzi lokalnie ale zawodzi w CI. Badanie...
Dodaję logi czasowe wokół krytycznych sekcji...
Znaleziono race condition:
- Test zakłada że wywołanie API kończy się przed aktualizacją UI
- W CI (wolniejsze środowisko) UI aktualizuje się pierwszy
- Test sprawdza dane które się jeszcze nie załadowały
Dodaję odpowiednie async/await i warunki oczekiwania
Agent: Ostatnie wdrożenie spowodowało błędy. Cofam...
1. Identyfikuję ostatnią działającą wersję z tagów Git
2. Tworzę PR revert dla problematycznych zmian
3. Uruchamiam testy aby upewnić się że rollback jest czysty
4. Wdrażam poprzednią stabilną wersję
5. Tworzę raport incydentu z główną przyczyną
# Konfiguruj zachowania samonaprawiające
Agent: Monitoruj zdrowie aplikacji i auto-naprawiaj częste problemy:
- Jeśli użycie pamięci > 80%: Uruchom garbage collection
- Jeśli czas odpowiedzi > 2s: Wyczyść cache i restart workerów
- Jeśli wskaźnik błędów > 5%: Przełącz na tryb ograniczony
- Jeśli połączenie z bazą danych zawodzi: Próbuj reconnect z backoff

Frontend + Backend

Agent śledzi problemy przez cały stos, od UI do bazy danych

Operacje asynchroniczne

AI dodaje logi czasowe aby zidentyfikować race conditions i deadlocki

API zewnętrzne

Mockuj zewnętrzne serwisy aby izolować problemy i testować przypadki błędów

Produkcja vs lokalne

Agent pomaga odtworzyć problemy produkcyjne w środowisku lokalnym

Test zawodzi: UserAuthentication.test.js
Agent: Pozwól mi debugować tę awarię testu.
1. Uruchamiam test w izolacji - ZAWODZI
2. Dodaję verbose logging do testu
3. Test oczekuje 'user.role' ale otrzymuje undefined
4. Sprawdzam ostatnie zmiany...
5. Znaleziono: Migracja schematu dodała 'role' ale dane seed nie zostały zaktualizowane
6. Aktualizuję fixtures testowe polem role
7. Test teraz przechodzi ✓
PILNE: Użytkownicy nie mogą się zalogować - problem produkcyjny
Agent: Badam awarię logowania...
1. Sprawdzam ostatnie wdrożenia (2 godziny temu)
2. Analizuję logi błędów: "Invalid JWT secret"
3. Zmienna środowiskowa JWT_SECRET nie jest ustawiona w produkcji
4. Tworzę hotfix:
- Dodanie fallback dla brakującej zmiennej env
- Logowanie ostrzeżenia przy użyciu fallback
- Tworzenie pilnego PR
Naprawa wdrożona. Logowanie przywrócone.
Całkowity czas rozwiązania: 8 minut.

Gdy sam Cursor ma problemy:

Rozwiązanie:
1. Uruchom diagnostykę sieciową: Ustawienia → Sieć → Uruchom diagnostykę
2. Sprawdź ustawienia firewall/proxy
3. Spróbuj fallback HTTP/1.1 jeśli HTTP/2 jest zablokowane
4. Sprawdź połączenie internetowe

Kodowanie defensywne

Pozwól AI dodać sprawdzenia null, walidację input i granice błędów

Wczesne testowanie

Pisz testy z implementacją aby wychwycić problemy natychmiast

Bezpieczeństwo typów

Używaj TypeScript/podpowiedzi typów aby zapobiec błędom runtime

Przeglądy kodu

BugBot wychwytuje problemy zanim dotrą do produkcji

Śledź te metryki aby zobaczyć poprawę:

  • Średni czas do rozwiązania (MTTR): powinien się zmniejszyć o 40%+
  • Błędy wykryte przed produkcją: wzrost z recenzjami AI
  • Długość sesji debugowania: krótsza z pomocą AI
  • Incydenty produkcyjne: mniej z proaktywnym wykrywaniem
  • Metryki jakości kodu: lepsze z automatycznymi naprawami

Opanuj debugowanie z pomocą AI:

  1. Włącz tryb YOLO dla automatycznego naprawiania błędów
  2. Ustaw integrację śledzenia błędów
  3. Używaj bug finder przed każdym commitem
  4. Twórz szablony debugowania dla częstych problemów
  5. Dziel się wzorcami debugowania z zespołem