Development ★ 158

dbg

dbg CLI debugger ile uygulamalarınızı hata ayıklayın. Node.js (V8/CDP), Bun (WebKit/JSC), Python (debugpy/DAP), Java (JDWP/DAP) ve LLDB (DAP) aracılığıyla native kod desteği sunur. Kodda adım adım ilerleyerek runtime hatalarını araştırma, belirli execution noktalarında değişken değerlerini inceleme, breakpoint ve conditional breakpoint ayarlama, paused context içinde expression değerlendirme gibi durumlarda kullanın.

cd ~/.claude/skills
git clone https://github.com/theodo-group/debug-that.git debug-that

dbg Debugger

dbg bir CLI hata ayıklayıcısıdır ve Node.js (V8/CDP), Bun (WebKit/JSC), Java (JDWP/DAP üzerinden) ve native code (C/C++/Rust/Swift LLDB/DAP üzerinden) destekler. Tüm entityler için kısa @refs kullanır -- uzun ID'ler yerine bunları kullanın.

Desteklenen Runtime'lar

Runtime Dil Başlatma örneği
Node.js JavaScript dbg launch --brk node app.js
tsx / ts-node TypeScript dbg launch --brk tsx src/app.ts
Bun JavaScript / TypeScript dbg launch --brk bun app.ts
LLDB C / C++ / Rust / Swift dbg launch --brk --runtime lldb ./program
JDWP Java dbg launch --brk --runtime java ./program

Runtime, JS runtime'ları için başlatma komutundan otomatik olarak algılanır. Native code için --runtime lldb kullanın.

Çekirdek Debug Döngüsü

# 1. İlk satırda breakpoint ile başlat
dbg launch --brk node app.js
# Veya: dbg launch --brk bun app.ts
# Veya: dbg launch --brk --runtime lldb ./my_program
# Veya --inspect flag ile çalışan bir process'e bağlan
dbg attach 9229

# 2. Şüpheli yerlerde breakpoint ayarla
dbg break src/handler.ts:42
dbg break src/utils.ts:15 --condition "count > 10"

# 3. Breakpoint'e kadar çalıştır
dbg continue

# 4. State'i incele (konum, kaynak, yerel değişkenler, stack gösterir)
dbg state

# 5. Değerleri derinlemesine incele
dbg props @v1              # object'i genişlet
dbg props @v1 --depth 3   # 3 seviye iç içe genişlet
dbg eval "x + 1"

# 6. Düzelt ve doğrula (sadece JS/TS)
dbg set count 0            # değişkeni değiştir
dbg hotpatch src/utils.js  # canlı düzenle (diskteki dosyayı okur)
dbg continue               # düzeltmeyi doğrula

Hata Ayıklama Stratejileri

Hata araştırması -- breakpoint'lerle daralt

dbg launch --brk node app.js
dbg break src/api.ts:50                    # şüpheli satır
dbg break src/api.ts:60 --condition "!user" # koşullu
dbg continue
dbg vars                                    # yerel değişkenleri kontrol et
dbg eval "JSON.stringify(req.body)"         # derinlemesine incele
dbg step over                               # bir satır ilerle
dbg state                                   # yeni state'i gör

Native code hata ayıklama (C/C++/Rust)

dbg launch --brk --runtime lldb ./my_program
dbg break main.c:42
dbg break-fn main                          # function breakpoint (sadece DAP)
dbg continue
dbg vars                                    # yerel değişkenleri incele
dbg eval "array[i]"                         # ifadeyi değerlendir
dbg step into                               # fonksiyona adım at

Çalışan/test process'e bağlan

# Inspector etkinleştirilmiş şekilde başlat
node --inspect app.js
# Veya: bun --inspect app.ts
# Sonra bağlan
dbg attach 9229
dbg state

Logpoint'lerle yürütme akışını takip et (durmaz)

dbg logpoint src/auth.ts:20 "login attempt: ${username}"
dbg logpoint src/auth.ts:45 "auth result: ${result}"
dbg continue
dbg console    # günlüğe yazılan çıktıyı gör

Exception hata ayıklama

dbg catch uncaught          # yakalanamayan exceptionlarda durdur
dbg continue                # exception'a kadar çalıştır
dbg state                   # fırlattığı yeri gör
dbg eval "err.message"      # hatayı incele
dbg stack                   # tam call stack

TypeScript source map desteği

dbg otomatik olarak source map'ler üzerinden .ts yollarını çözer. .ts yollarını kullanarak breakpoint ayarlayın, çıktıda .ts kaynak kodunu görün. Derlenmiş .js kodunu görmek için --generated kullanın.

Ref Sistemi

Her çıktı kısa refs atar. Bunları her yerde kullanın:

  • @v1..@vN -- değişkenler: dbg props @v1, dbg set @v2 true
  • @f0..@fN -- stack frame'leri: dbg eval --frame @f1 "this"
  • BP#1..N -- breakpoint'ler: dbg break-rm BP#1, dbg break-toggle BP#1
  • LP#1..N -- logpoint'ler: dbg break-rm LP#1

@v/@f ref'leri her duruşta sıfırlanır. BP#/LP# kaldırılana kadar devam eder.

Temel Flag'ler

  • --json -- herhangi bir komutta makine tarafından okunabilir JSON çıktı
  • --session NAME -- belirli bir session'ı hedefle (varsayılan: "default")
  • --runtime NAME -- debug adapter'ı seç (örn. native code için lldb)
  • --generated -- source map'leri atla, derlenmiş JS göster (state/source/stack'te)

Komut Referansı

Tam komut detayları ve seçenekleri için references/commands.md bölümüne bakın.

İpuçları

  • dbg state adımlamadan sonra her zaman konum + kaynak + yerel değişkenleri gösterir -- genellikle yeterli bağlam
  • dbg state -c sadece kaynak, -v sadece değişkenler, -s sadece stack için -- token'ları kurtarın
  • dbg eval await destekler -- async inceleme için faydalı (JS/TS)
  • dbg blackbox "node_modules/**" -- bağımlılıklara adım atmayı atla
  • dbg hotpatch file dosyayı diskten okur -- önce dosyayı düzenleyin, sonra hotpatch yapın (sadece JS/TS)
  • dbg break-fn funcName -- function breakpoint'ler DAP runtime'larında çalışır (LLDB)
  • Yürütme komutları (continue, step, pause, run-to) otomatik olarak status döndürür
  • dbg stop hata ayıklanan process'i ve daemon'u öldürür

Benzer skill'ler

Daha fazla: Development →