İçindekiler
Yapay Zeka ile Debugging Teknikleri Prompt Şablonları
Bu rehber, yazılım geliştirme sürecindeki hata ayıklama çalışmalarınızı yapay zeka ile güçlendirmek için tasarlanmış kapsamlı prompt şablonlarını içermektedir. Syntax hatalarından mantıksal hatalara, performans sorunlarından memory leak tespitine kadar geniş bir yelpazede kullanabileceğiniz şablonlar sunulmaktadır. Her şablon, sistematik debugging yaklaşımları ve best practice kurallara uygun olarak hazırlanmıştır.
🐛 Kullanım Notu: Şablonlardaki [KÖŞELİ PARANTEZ] içindeki alanları kendi kodunuz ve hata durumunuza göre doldurun. Hassas bilgileri (API key, şifre, production verileri) paylaşmadan önce temizleyin. AI önerilerini test ortamında doğrulayın.
Hata Analizi Şablonları
Genel Hata Analizi
Her türlü hatayı sistematik analiz etmek için.
Kodumdaki hatayı analiz et ve çöz.
HATA BİLGİLERİ:
- Programlama dili: [Python / JavaScript / Java / C# / Go / ...]
- Framework/Kütüphane: [React / Django / Spring / .NET / ...]
- Ortam: [Development / Staging / Production]
- Hata türü: [Syntax / Runtime / Logic / Compile / ...]
HATA MESAJI:
[Tam hata mesajını buraya yapıştır]
STACK TRACE:
[Varsa stack trace]
İLGİLİ KOD:
[dil]
[Hataya sebep olan kod bloğu]
BAĞLAM:
- Bu kod ne yapmalı: [...]
- Ne zaman hata oluşuyor: [...]
- Son yapılan değişiklikler: [...]
- Daha önce çalışıyor muydu: [Evet / Hayır / Bilmiyorum]
ANALİZ İSTEĞİ:
1. HATA TESPİTİ:
- Hatanın tam olarak ne olduğu
- Hangi satır/satırlarda oluştuğu
- Hata türü ve kategorisi
2. KÖK NEDEN ANALİZİ:
- Hatanın temel sebebi
- Neden bu hata oluştu
- Tetikleyici faktörler
3. ÇÖZÜM ÖNERİLERİ:
- Birincil çözüm (en doğru yaklaşım)
- Alternatif çözümler
- Her çözümün artıları ve eksileri
4. DÜZELTİLMİŞ KOD:
- Çalışan kod örneği
- Değişikliklerin açıklaması
5. ÖNLEME:
- Bu hatanın tekrarlanmaması için öneriler
- Best practice hatırlatmaları
- Test önerileriRuntime/Exception Hata Analizi
Çalışma zamanı hatalarını analiz etmek için.
Runtime hatasını analiz et.
HATA TÜRÜ: [NullPointerException / TypeError / IndexError / SegmentationFault / ...]
PROGRAMLAMA DİLİ: [...]
HATA MESAJI:
[Hata mesajı]
STACK TRACE:
[Tam stack trace - önemli!]
HATANIN OLUŞTUĞU KOD:
[dil]
[İlgili kod]
ÇAĞRI ZİNCİRİ:
- Fonksiyon A -> Fonksiyon B -> Hata noktası
INPUT VERİLERİ:
[Hataya sebep olan input varsa]
RUNTIME HATA ANALİZİ:
1. STACK TRACE OKUMA:
- Hata başlangıç noktası: [...]
- Çağrı zinciri: [...]
- Son çalışan satır: [...]
2. HATA TİPİ ANALİZİ:
[NullPointerException / None hatası]:
- Hangi değişken null/None
- Nerede null olmamalıydı
- Null kontrolü eksik mi
[TypeError]:
- Beklenen tip: [...]
- Gelen tip: [...]
- Tip dönüşümü gerekli mi
[IndexError / ArrayOutOfBounds]:
- Dizi boyutu: [...]
- Erişilmeye çalışılan index: [...]
- Boundary check eksik mi
[KeyError / Undefined]:
- Aranan key: [...]
- Mevcut key listesi: [...]
- Varsayılan değer gerekli mi
3. HATA SENARYOSU:
- Normal akış: [...]
- Hata akışı: [...]
- Fark: [...]
4. ÇÖZÜM:
Defensive coding yaklaşımı:
[dil]
[Null check, type check, boundary check eklenmiş kod]
Try-catch yaklaşımı:
[dil]
[Exception handling eklenmiş kod]
5. LOGGING ÖNERİSİ:
[dil]
[Debug için eklenmesi gereken log satırları]
Mantıksal Hata (Logic Bug) Analizi
Hata vermeden yanlış sonuç üreten kodlar için.
Kodumda mantıksal hata var, analiz et.
DURUM:
- Kod hata vermiyor ama yanlış sonuç üretiyor
- Beklenen davranış: [...]
- Gerçekleşen davranış: [...]
KOD:
[dil]
[İlgili kod bloğu]
TEST CASE:
- Input: [...]
- Beklenen output: [...]
- Gerçek output: [...]
MANTIKSAL HATA ANALİZİ:
1. KOD İNCELEMESİ:
Satır satır analiz:
Satır X: [kod]
- Bu satır ne yapıyor: [...]
- Beklenen: [...]
- Gerçekleşen: [...]
- Sorun var mı: [Evet/Hayır]
[Her kritik satır için devam]
2. OLASI HATA KAYNAKLARI:
[ ] Off-by-one error (döngü sınırları)
[ ] Yanlış operatör (== vs ===, = vs ==)
[ ] Yanlış koşul (AND vs OR, > vs >=)
[ ] Değişken scope sorunu
[ ] Yanlış değişken kullanımı
[ ] Sıralama/öncelik hatası
[ ] Edge case kaçırma
[ ] Floating point karşılaştırma
[ ] Integer overflow/underflow
[ ] String/Number karışıklığı
3. ADIM ADIM EXECUTION:
Input: [...]
Adım 1: [değişken durumları]
Adım 2: [değişken durumları]
Adım 3: [değişken durumları]
...
Sonuç: [...]
Hata noktası: Adım [X]
4. DÜZELTME:
Yanlış:
[dil]
[Hatalı kod]
Doğru:
[dil]
[Düzeltilmiş kod]
Açıklama:
[Neyin neden değiştirildiği]
5. TEST CASES:
[dil]
[Edge case dahil test kodları]
Özel Hata Türleri Şablonları
Async/Promise/Concurrency Hataları
Asenkron kod ve eşzamanlılık sorunları için.
Asenkron kod hatasını analiz et.
PROGRAMLAMA DİLİ: [JavaScript / Python / Java / Go / C#]
ASYNC MODEL: [Promise / async-await / callback / threading / goroutine]
SORUN:
[Sorunun açıklaması - race condition, deadlock, callback hell, unhandled rejection, vb.]
KOD:
[dil]
[Asenkron kod]
HATA MESAJI (varsa):
[Hata]
ASYNC HATA ANALİZİ:
1. ASYNC PATTERN İNCELEME:
Mevcut pattern: [...]
Sorunlu alanlar: [...]
2. YAYGIN ASYNC SORUNLARI:
[ ] Unhandled Promise rejection
[ ] Missing await
[ ] Race condition
[ ] Deadlock
[ ] Callback hell / Pyramid of doom
[ ] Memory leak (listener temizlenmemiş)
[ ] Stale closure
[ ] Concurrent modification
[ ] Thread safety ihlali
3. EXECUTION FLOW ANALİZİ:
Beklenen sıra:
1. [...]
2. [...]
3. [...]
Gerçek sıra:
1. [...]
2. [...]
3. [...]
Sorun: [Sıralama uyumsuzluğu açıklaması]
4. RACE CONDITION TESPİTİ:
Paylaşılan kaynak: [...]
Erişen thread/promise sayısı: [...]
Senkronizasyon mekanizması: [Var/Yok]
Potansiyel race:
- Thread A: [okuma/yazma]
- Thread B: [okuma/yazma]
- Çakışma: [...]
5. ÇÖZÜM:
JavaScript/TypeScript için:
javascript
// Promise chain düzeltme
// async/await düzeltme
// Error handling ekleme
Python için:
python
# asyncio düzeltme
# threading lock ekleme
Genel çözüm:
[dil]
[Düzeltilmiş async kod]
6. BEST PRACTICES:
- Promise.all vs Promise.allSettled kullanımı
- Error boundary
- Timeout handling
- Cancellation token
- Resource cleanupMemory Leak ve Performans Sorunları
Bellek sızıntıları ve performans debugging için.
Memory leak / performans sorununu analiz et.
SORUN TÜRÜ: [Memory leak / Yüksek CPU / Yavaş response / OOM]
PROGRAMLAMA DİLİ: [...]
ORTAM: [Browser / Node.js / JVM / .NET / Native]
BELİRTİLER:
- [Bellek sürekli artıyor]
- [Uygulama zamanla yavaşlıyor]
- [OutOfMemory hatası]
- [CPU %100]
PROFILER VERİLERİ (varsa):
[Heap dump, profiler çıktısı]
ŞÜPHELİ KOD:
[dil]
[Memory leak şüphesi olan kod]
MEMORY LEAK ANALİZİ:
1. YAYGIN MEMORY LEAK NEDENLERİ:
JavaScript/Browser:
[ ] Event listener temizlenmemiş
[ ] setInterval/setTimeout temizlenmemiş
[ ] DOM referansları tutulmuş
[ ] Closure içinde büyük objeler
[ ] Global değişken birikimi
[ ] Detached DOM nodes
[ ] Console.log production da
Python:
[ ] Circular reference
[ ] Global cache büyümesi
[ ] File handle kapatılmamış
[ ] Database connection leak
[ ] __del__ kullanım hatası
Java/C#:
[ ] Static collection büyümesi
[ ] Listener/Observer temizlenmemiş
[ ] ThreadLocal temizlenmemiş
[ ] Connection pool leak
[ ] Unclosed streams
Genel:
[ ] Cache sınırsız büyüyor
[ ] Connection pool tükeniyor
[ ] Buffer temizlenmiyor
2. LEAK TESPİT YÖNTEMİ:
Adım 1: Baseline ölçümü
- Başlangıç memory: [...]
Adım 2: İşlem tekrarı
- 100x işlem sonrası: [...]
- 1000x işlem sonrası: [...]
Adım 3: GC sonrası
- Force GC sonrası memory: [...]
- Temizlenmeyen miktar: [...]
3. KOD İNCELEME:
Potansiyel leak noktaları:
Nokta 1: Satır [X]
[dil]
[kod parçası]
Sorun: [...]
Nokta 2: Satır [Y]
[...]
4. DÜZELTME:
Leak 1 düzeltme:
[dil]
// Önce
[eski kod]
// Sonra
[düzeltilmiş kod]
Cleanup pattern:
[dil]
[Resource cleanup, dispose, finally blokları]
5. PERFORMANS OPTİMİZASYONU:
Öneriler:
- [Caching stratejisi]
- [Lazy loading]
- [Object pooling]
- [Weak reference kullanımı]
6. İZLEME:
Eklenecek metrikler:
- Heap size
- GC frequency
- Object count
- Response timeDatabase ve Query Hataları
Veritabanı bağlantı ve query sorunları için.
Database hatasını analiz et.
DATABASE: [PostgreSQL / MySQL / MongoDB / Redis / SQLite / ...]
ORM/DRIVER: [Sequelize / SQLAlchemy / Hibernate / Prisma / ...]
BAĞLANTI TÜRÜ: [Connection pool / Single connection / ...]
HATA MESAJI:
[Database hata mesajı]
QUERY:
sql
[Sorunlu query]
BAĞLAM KODU:
[dil]
[Query çalıştıran kod]
DATABASE HATA ANALİZİ:
1. HATA KATEGORİSİ:
[ ] Connection error
[ ] Authentication error
[ ] Query syntax error
[ ] Constraint violation
[ ] Timeout
[ ] Deadlock
[ ] Lock contention
[ ] N+1 query problemi
[ ] Slow query
[ ] Data type mismatch
2. CONNECTION SORUNLARI:
Connection refused:
- Host/Port doğru mu: [...]
- DB servisi çalışıyor mu: [...]
- Firewall: [...]
- Max connection: [...]
Connection pool exhausted:
- Pool size: [...]
- Active connections: [...]
- Leak var mı: [...]
3. QUERY ANALİZİ:
EXPLAIN çıktısı:
[EXPLAIN ANALYZE sonucu]
Sorunlu noktalar:
- Full table scan: [Evet/Hayır]
- Missing index: [...]
- Cartesian product: [...]
4. CONSTRAINT HATALARI:
Violation türü:
- [ ] Primary key duplicate
- [ ] Foreign key reference
- [ ] Unique constraint
- [ ] Not null violation
- [ ] Check constraint
Çözüm:
sql
[Düzeltilmiş query veya constraint]
5. TRANSACTION/DEADLOCK:
Deadlock durumu:
- Transaction 1: [...]
- Transaction 2: [...]
- Kilitli kaynak: [...]
Çözüm:
- Lock sıralaması
- Timeout ayarı
- Retry mekanizması
6. OPTİMİZASYON:
Index önerisi:
sql
CREATE INDEX ...
Query düzeltme:
sql
[Optimize edilmiş query]
ORM düzeltme:
[dil]
[Eager loading, batch query, vb.]
7. CONNECTION BEST PRACTICES:
[dil]
[Proper connection handling kodu]
API ve Network Hataları
HTTP, REST API ve network sorunları için.
API/Network hatasını analiz et.
API TÜRÜ: [REST / GraphQL / gRPC / WebSocket]
HTTP METHOD: [GET / POST / PUT / DELETE / PATCH]
ENDPOINT: [...]
REQUEST:
URL: [...]
Headers: [...]
Body: [...]
RESPONSE:
Status: [...]
Headers: [...]
Body: [...]
HATA MESAJI:
[Hata detayı]
KOD:
[dil]
[API çağrısı yapan kod]
API HATA ANALİZİ:
1. HTTP STATUS ANALİZİ:
4xx Client Errors:
- 400 Bad Request: [Request format/validation]
- 401 Unauthorized: [Auth token eksik/geçersiz]
- 403 Forbidden: [Yetki yok]
- 404 Not Found: [Endpoint/resource yok]
- 422 Unprocessable: [Validation hatası]
- 429 Too Many Requests: [Rate limit]
5xx Server Errors:
- 500 Internal Error: [Server hatası]
- 502 Bad Gateway: [Upstream hatası]
- 503 Service Unavailable: [Overload/maintenance]
- 504 Gateway Timeout: [Timeout]
Mevcut durum: [Status kodu ve anlamı]
2. REQUEST ANALİZİ:
URL doğrulaması:
- Base URL: [Doğru/Yanlış]
- Path: [Doğru/Yanlış]
- Query params: [Doğru/Yanlış]
Headers kontrolü:
- Content-Type: [...]
- Authorization: [...]
- Accept: [...]
Body kontrolü:
- Format: [JSON/Form/XML]
- Encoding: [...]
- Required fields: [...]
3. NETWORK SORUNLARI:
[ ] DNS resolution hatası
[ ] Connection refused
[ ] Connection timeout
[ ] Read timeout
[ ] SSL/TLS hatası
[ ] CORS hatası
[ ] Proxy sorunu
4. CORS ANALİZİ (Browser):
Origin: [...]
Allowed origins: [...]
Preflight response: [...]
Çözüm:
[dil]
// Server tarafı CORS ayarı
5. AUTH SORUNLARI:
Token kontrolü:
- Token var mı: [...]
- Token formatı: [Bearer/Basic/Custom]
- Token expire: [...]
- Token scope: [...]
6. ÇÖZÜM:
Request düzeltme:
[dil]
[Düzeltilmiş API call]
Error handling:
[dil]
[Proper error handling ile API call]
Retry logic:
[dil]
[Exponential backoff ile retry]
7. DEBUG CHECKLIST:
- [ ] Postman/curl ile test et
- [ ] Network tab incele
- [ ] Server logları kontrol et
- [ ] Proxy/VPN kapat ve deneFramework Özel Hata Şablonları
React/Frontend Hataları
React ve frontend framework hataları için.
React/Frontend hatasını analiz et.
FRAMEWORK: [React / Vue / Angular / Svelte / Next.js / ...]
HATA TÜRÜ: [Render / State / Hooks / Lifecycle / Build / ...]
HATA MESAJI:
[Console hatası]
COMPONENT KODU:
jsx
[Component kodu]
BAĞLAM:
- Parent component: [...]
- Props: [...]
- State: [...]
REACT HATA ANALİZİ:
1. YAYGIN REACT HATALARI:
Hooks kuralları:
[ ] Hook conditional içinde
[ ] Hook döngü içinde
[ ] Hook sırası değişiyor
[ ] Custom hook naming (use prefix)
State sorunları:
[ ] Direct state mutation
[ ] Stale state in closure
[ ] Infinite re-render
[ ] State not updating
Props sorunları:
[ ] Missing key in list
[ ] Props drilling
[ ] Undefined props access
Lifecycle:
[ ] Memory leak (cleanup eksik)
[ ] Race condition in useEffect
[ ] Missing dependency array
2. HATA TESPİTİ:
Hata türü: [...]
Oluştuğu component: [...]
Tetikleyici: [...]
3. ÇÖZÜM:
Hooks düzeltme:
jsx
// Yanlış
if (condition) {
const [state, setState] = useState();
}
// Doğru
const [state, setState] = useState();
// condition kullanımı render içinde
State düzeltme:
jsx
// Yanlış
state.items.push(newItem);
setState(state);
// Doğru
setState(prev => ({
...prev,
items: [...prev.items, newItem]
}));
useEffect düzeltme:
jsx
useEffect(() => {
let cancelled = false;
async function fetchData() {
const result = await api.get();
if (!cancelled) {
setState(result);
}
}
fetchData();
return () => {
cancelled = true;
};
}, [dependency]);
4. PERFORMANS SORUNLARI:
[ ] Unnecessary re-render
[ ] Large component tree
[ ] Missing memoization
[ ] Heavy computation in render
Çözüm:
jsx
// useMemo, useCallback, React.memo kullanımı
5. DEV TOOLS KULLANIMI:
React DevTools:
- Component tree incele
- Props/State kontrol
- Profiler ile re-render takibi
Console debugging:
jsx
useEffect(() => {
console.log("Effect triggered", dependency);
}, [dependency]);
Backend/Node.js Hataları
Node.js ve backend framework hataları için.
Node.js/Backend hatasını analiz et.
FRAMEWORK: [Express / NestJS / Fastify / Koa / Django / Flask / Spring / ...]
RUNTIME: [Node.js / Python / Java / Go / ...]
HATA MESAJI:
[Hata ve stack trace]
KOD:
[dil]
[İlgili kod]
ORTAM:
- Node version: [...]
- Environment: [Development / Production]
- OS: [...]
BACKEND HATA ANALİZİ:
1. YAYGIN BACKEND HATALARI:
Node.js:
[ ] Unhandled Promise rejection
[ ] EventEmitter memory leak warning
[ ] ECONNREFUSED
[ ] EADDRINUSE (port kullanımda)
[ ] Module not found
[ ] Heap out of memory
[ ] Maximum call stack exceeded
Express/Web Framework:
[ ] Cannot set headers after sent
[ ] Route not found
[ ] Middleware order hatası
[ ] Body parser eksik
[ ] CORS hatası
Database:
[ ] Connection pool exhausted
[ ] Query timeout
[ ] Transaction deadlock
2. ERROR HANDLING ANALİZİ:
Mevcut error handling:
[dil]
[Mevcut try-catch, error middleware]
Eksikler:
- [ ] Global error handler yok
- [ ] Async error handling eksik
- [ ] Validation error handling yok
- [ ] Database error handling yetersiz
3. ÇÖZÜM:
Global error handler:
javascript
// Express için
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(err.status || 500).json({
error: {
message: err.message,
...(process.env.NODE_ENV === "development" && { stack: err.stack })
}
});
});
// Unhandled rejection
process.on("unhandledRejection", (reason, promise) => {
console.error("Unhandled Rejection:", reason);
});
Async wrapper:
javascript
const asyncHandler = (fn) => (req, res, next) =>
Promise.resolve(fn(req, res, next)).catch(next);
app.get("/route", asyncHandler(async (req, res) => {
// async code
}));
4. LOGGING VE MONITORING:
Logging setup:
javascript
// Winston/Pino configuration
Error tracking:
- Sentry integration
- Error alerting
- Stack trace collection
5. PRODUCTION CHECKLIST:
- [ ] Environment variables güvenli
- [ ] Error detayları expose edilmiyor
- [ ] Rate limiting aktif
- [ ] Graceful shutdown var
- [ ] Health check endpoint varDebugging Stratejileri Şablonları
Sistematik Debugging Yaklaşımı
Karmaşık hataları adım adım çözmek için.
Sistematik debugging rehberi oluştur.
PROBLEM:
[Hatanın açıklaması]
KARMAŞIKLIK: [Basit / Orta / Karmaşık / Çok karmaşık]
TEKRARLANABILIR: [Her zaman / Bazen / Nadir / Henüz tekrarlayamadım]
SİSTEMATİK DEBUGGİNG:
1. PROBLEM TANIMLAMA:
Ne oluyor:
[Gözlemlenen davranış]
Ne olmalı:
[Beklenen davranış]
Fark:
[Aradaki fark]
Ne zaman:
- İlk görülme: [...]
- Son görülme: [...]
- Sıklık: [...]
2. YENİDEN ÜRETME (REPRODUCTION):
Minimum reproduction steps:
1. [Adım 1]
2. [Adım 2]
3. [Adım 3]
-> Hata oluşur
Değişkenler:
- Input: [...]
- Ortam: [...]
- Kullanıcı: [...]
- Zaman: [...]
Çalışan case:
[Hatanın oluşmadığı senaryo]
3. İZOLASYON:
Binary search yaklaşımı:
1. Kodun yarısını disable et
2. Hata devam ediyor mu?
Evet -> O yarıda ara
Hayır -> Diğer yarıda ara
3. Tekrarla
Git bisect:
git bisect start
git bisect bad [current]
git bisect good [last known good]
4. HİPOTEZ VE TEST:
Hipotez 1: [...]
Test: [...]
Sonuç: [Doğrulandı / Çürütüldü]
Hipotez 2: [...]
Test: [...]
Sonuç: [...]
Hipotez 3: [...]
Test: [...]
Sonuç: [...]
5. DEBUG ARAÇLARI:
Console/Print debugging:
[dil]
[Stratejik log noktaları]
Debugger breakpoints:
- Satır [X]: [Neden burası]
- Satır [Y]: [Neden burası]
Watch variables:
- [Değişken 1]
- [Değişken 2]
6. ROOT CAUSE:
Tespit edilen kök neden:
[...]
Neden bu gözden kaçmış:
[...]
7. ÇÖZÜM VE DOĞRULAMA:
Uygulanan çözüm:
[dil]
[Kod]
Doğrulama:
- [ ] Orijinal hata düzeldi
- [ ] Yan etki yok
- [ ] Test pass ediyor
- [ ] Edge case kontrol edildi
8. DÖKÜMANTASYON:
Öğrenilen dersler:
- [...]
Gelecekte önleme:
- [...]Production Debugging
Canlı ortamda hata ayıklama için.
Production ortamında debugging stratejisi.
DURUM:
- Hata sadece production da mı: [Evet / Hayır]
- User impact: [Kritik / Yüksek / Orta / Düşük]
- Etkilenen kullanıcı sayısı: [...]
- Ne zamandır oluşuyor: [...]
PRODUCTION DEBUGGİNG:
1. ÖNCE GÜVENLİK:
[ ] Hatayı triage et (P0/P1/P2/P3)
[ ] Gerekirse rollback hazırla
[ ] Kullanıcıları bilgilendir
[ ] On-call ekibi dahil et
2. VERİ TOPLAMA:
Loglar:
- Application logs: [...]
- Access logs: [...]
- Error logs: [...]
Metrikler:
- Error rate: [...]
- Response time: [...]
- CPU/Memory: [...]
- Request volume: [...]
Traces:
- Distributed tracing: [...]
- Request ID: [...]
3. PATTERN ANALİZİ:
Zaman pattern:
- Belirli saatlerde mi: [...]
- Traffic spike ile mi: [...]
User pattern:
- Belirli kullanıcılarda mı: [...]
- Belirli region da mı: [...]
Request pattern:
- Belirli endpoint de mi: [...]
- Belirli input ile mi: [...]
4. DEV VS PROD FARKLARI:
Kontrol listesi:
- [ ] Environment variables
- [ ] Database (data, config)
- [ ] External services
- [ ] Network config
- [ ] Scale (single vs multiple instance)
- [ ] Caching
- [ ] Feature flags
- [ ] SSL/TLS
- [ ] CDN/Proxy
5. SAFE DEBUGGİNG TEKNİKLERİ:
Read-only operations:
sql
-- SELECT queries only, no mutations
Shadow traffic:
- Production trafiği kopyala
- Debug ortamında çalıştır
Feature flag ile izolasyon:
[dil]
if (featureFlag.isEnabled("debug_mode", user)) {
// Enhanced logging
}
Canary deployment:
- Fix i küçük bir gruba deploy et
- Metrikleri izle
- Yavaşça genişlet
6. LOGGING ENJEKSİYONU:
Temporary verbose logging:
[dil]
// Session/user bazlı logging açma
Structured logging:
[dil]
logger.info("Operation completed", {
userId: user.id,
action: "purchase",
amount: order.total,
duration: endTime - startTime
});
7. POST-MORTEM:
Timeline:
- [Saat]: Hata başladı
- [Saat]: Tespit edildi
- [Saat]: Çözüm uygulandı
- [Saat]: Doğrulandı
Root cause: [...]
Action items:
- [ ] Fix kalıcı mı
- [ ] Monitoring eklendi mi
- [ ] Dökümantasyon güncellendi mi
- [ ] Benzer hatalar tarandı mıRubber Duck Debugging Promptu
Problemi açıklayarak çözmek için.
Bir yazılım geliştirici olarak yaşadığım sorunu sana anlatacağım. Bana aktif dinleyici ol ve sorun çözülene kadar yardımcı ol.
RUBBER DUCK SESSION:
1. PROBLEM NEDİR:
Ne yapmaya çalışıyorum:
[...]
Ne oluyor:
[...]
2. ŞİMDİYE KADAR DENEDİKLERİM:
- Deneme 1: [...]
Sonuç: [...]
- Deneme 2: [...]
Sonuç: [...]
3. ŞÜPHELERİM:
Belki şundan kaynaklanıyor olabilir:
- [...]
- [...]
4. KODUMU AÇIKLIYORUM:
Satır satır ne yaptığımı anlatıyorum:
[Satır 1]: Bu satır [...]
[Satır 2]: Bu satır [...]
[Satır 3]: Burada [...]
...
5. SENİN SORULARIN:
Lütfen bana şu soruları sor:
- Bu değişken burada hangi değere sahip olmalı?
- Bu koşul ne zaman true oluyor?
- Bu fonksiyon nereden çağrılıyor?
- Bu veri nereden geliyor?
- Edge case düşündün mü?
6. AHA ANI:
[Problemi anlatırken fark ettiğim şey]
7. ÇÖZÜM:
[Bulunan çözüm]Debugging İpuçları
Temel İlkeler:
- Hata mesajını dikkatlice oku
- Reproduce edebilmek kritik
- Bir seferde bir değişiklik yap
- Varsayımlarını sorgula
- Binary search ile izole et
Debugging Mindset:
- Bilgisayar sihir yapmaz, mantık var
- Hata kodunda, nadiren compiler/framework de
- En son değişen şey muhtemelen suçlu
- Basit açıklamalar önce
- Rubber duck debugging işe yarar
Araç Kullanımı:
- Debugger kullanmayı öğren
- Log seviyelerini doğru kullan
- Profiler ile performans analizi
- Version control (git bisect)
- Test yazarak debug et
AI ile Debugging:
- Tam hata mesajı ve stack trace paylaş
- İlgili kodu dahil et
- Bağlamı açıkla
- Denediklerini belirt
- AI önerisini körü körüne uygulama
Önleme:
- Type safety kullan
- Test yaz (unit, integration)
- Code review yap ve al
- Linter ve static analysis
- Defensive programming
Rehberler Arasında Gezin