Debugging Kılavuzu
Debugging, sadece kod hatalarını bulmak değil, sistematik bir problem çözme sürecidir. Bu kılavuz, etkili debug yaklaşımları ve araçlarını açıklar.
Temel Prensipler
- Reproduce first: Hatayı güvenilir şekilde tekrarlayamıyorsan, çözmekte zorlanırsın
- Bir şeyi değiştir: Aynı anda birden fazla değişiklik yapma
- Assume nothing: Varsayımlarını sorgula, her şeyi doğrula
- Binary search: Problemi ikiye bölerek daralt
- Read the error: Hata mesajını gerçekten oku, varsayma
Debug Süreci
| Adım | Açıklama |
|---|---|
| 1. Reproduce | Hatayı tutarlı şekilde tekrarla |
| 2. Isolate | Problemi en küçük örneğe daralt |
| 3. Hypothesize | Olası nedenleri listele |
| 4. Test | Hipotezleri test et |
| 5. Fix | Kök nedeni düzelt |
| 6. Verify | Düzeltmenin çalıştığını doğrula |
| 7. Prevent | Gelecekte oluşmasını engelle |
Yaygın Debug Teknikleri
Print/Log Debugging
- Stratejik noktalara log ekle
- Değişken değerlerini, akış durumunu logla
- Log seviyelerini doğru kullan (debug, info, error)
- Production'da temizlemeyi unutma veya feature flag kullan
Debugger Kullanımı
- Breakpoint koy, adım adım ilerle
- Watch expressions ile değişkenleri izle
- Call stack'i incele
- Conditional breakpoint: sadece belirli koşulda dur
Rubber Duck Debugging
Problemi birine (veya bir lastik ördeğe) sesli anlat. Anlatırken çoğu zaman çözümü bulursun.
Araçlar
| Araç | Kullanım |
|---|---|
| VS Code Debugger | Frontend/Backend debugging |
| Chrome DevTools | Frontend, network, performance |
| Postman/Insomnia | API debugging |
| pgAdmin/DBeaver | Database debugging |
| Datadog/Grafana | Production observability |
| Sentry | Error tracking |
Production Debugging
- Logları incele (Datadog, CloudWatch)
- Metrics'e bak (latency spike, error rate)
- Traces ile akışı takip et
- Değişen bir şey var mı? (deploy, config, traffic)
- Canary/staging'de reproduce etmeye çalış
Production'da debug yaparken dikkatli ol. Read-only operasyonlar tercih et, değişiklik yapmadan önce düşün.
Zor Buglar İçin
- Ara ver, yürüyüşe çık (subconscious processing)
- Başka birine anlat (pair debugging)
- Git blame: bu kod ne zaman, neden değişti?
- Similar issues: daha önce benzer bir şey yaşanmış mı?
- Sleep on it: sabah taze bakışla bak
