BAB 02

02 - AI untuk Debugging dan Troubleshooting

Estimasi Waktu: 35-45 menit Prasyarat: 01-ai-assisted-coding.md


Apa Itu Materi Ini?

Materi ini membahas bagaimana menggunakan AI secara efektif untuk debugging - menemukan, memahami, dan memperbaiki bug. AI sangat powerful untuk debugging karena bisa menganalisis error messages, menelusuri alur kode, dan mengidentifikasi pola error yang mungkin terlewatkan.


Tujuan Pembelajaran

Setelah mempelajari materi ini, kamu akan mampu:


1. Debugging dengan AI: Pendekatan yang Benar

Prinsip: AI sebagai Investigator Partner

BUKAN: "Fix error ini" β†’ [paste error]
TAPI:  Berikan konteks lengkap agar AI bisa membantu dengan tepat

AI paling efektif ketika kamu memberikan:
1. Error message lengkap + stack trace
2. Kode yang terkait
3. Apa yang kamu harapkan terjadi
4. Apa yang sebenarnya terjadi
5. Apa yang sudah kamu coba

2. Template Prompt untuk Debugging

Template: Error Analysis

## Error yang Saya Temui

**Error Message:**

[paste error lengkap termasuk stack trace]


**Kode Terkait:**
```[bahasa]
[paste kode yang menyebabkan error]

Konteks:

Analisis:

  1. Apa penyebab error ini?
  2. Bagaimana cara memperbaikinya?
  3. Bagaimana cara mencegahnya di masa depan?

### Template: Unexpected Behavior

Perilaku yang Tidak Diharapkan

Kode: [kode]

Input: [apa yang dimasukkan] Expected Output: [apa yang seharusnya] Actual Output: [apa yang keluar]

Environment:

Bantu saya:

  1. Identifikasi mengapa output berbeda dari yang diharapkan
  2. Tunjukkan baris kode mana yang bermasalah
  3. Berikan solusi yang tepat

### Template: Performance Issue

Performance Problem

Kode: [kode yang lambat]

Metrik:

Profil:

Analisis dan optimasi kode ini. Jelaskan bottleneck dan berikan solusi yang tetap menjaga readability.


---

## 3. Teknik Debugging Lanjutan dengan AI

### Teknik 1: Rubber Duck Debugging AI-Enhanced

β€œSaya akan menjelaskan kode saya langkah demi langkah. Tolong ikuti dan hentikan saya jika ada yang tidak masuk akal.”

[Penjelasan langkah 1] AI: β€œIni masuk akal. Lanjut.”

[Penjelasan langkah 2] AI: β€œTunggu - kamu bilang variable X selalu positif, tapi di line 15 ada kemungkinan X = 0. Itu bisa menyebabkan division by zero di line 23.”


### Teknik 2: Step-by-Step Tracing

Trace eksekusi kode berikut untuk input: user_input = β€œhello123”

[kode]

Untuk setiap baris, tunjukkan:

  1. State variable saat ini
  2. Apa yang akan terjadi
  3. Apakah ada yang aneh

Lakukan ini sampai selesai atau sampai menemukan bug.


### Teknik 3: Differential Debugging

Kode yang bekerja (versi lama): [kode v1]

Kode yang broken (versi baru): [kode v2]

Perbandingan:

Identifikasi perubahan spesifik yang menyebabkan bug.


### Teknik 4: Hypothesis Testing

Saya punya bug di kode ini: [kode]

Hipothesis saya:

  1. Mungkin ada race condition di async call
  2. Mungkin data dari API berubah format
  3. Mungkin ada typo di nama variable

Bantu saya: a. Evaluasi setiap hypothesis - mana yang paling mungkin? b. Untuk setiap hypothesis, tunjukkan bagaimana cara memverifikasinya c. Berikan code untuk logging/debugging yang bisa membantu mengkonfirmasi


---

## 4. Jenis-Jenis Bug dan Cara AI Membantu

### Syntax Errors

AI sangat bagus untuk ini karena langsung bisa mengidentifikasi syntax yang salah dan memperbaikinya.

Prompt: β€œFix syntax errors in this code: [kode]”


### Logic Errors

AI cukup baik tapi perlu konteks yang jelas tentang apa yang diharapkan vs apa yang terjadi.

Prompt: β€œKode ini tidak menghasilkan output yang benar. Expected: X, Actual: Y. Temukan logic error-nya.”


### Runtime Errors

AI sangat bagus karena bisa menganalisis stack trace dan mengidentifikasi root cause.

Prompt: β€œAnalisis stack trace ini dan identifikasi penyebab dan solusinya: [stack trace]”


### Concurrency Bugs

AI cukup baik tapi concurrency bugs bisa tricky. Berikan scenario yang spesifik.

Prompt: β€œSaya punya race condition di [kode]. Bagaimana cara membuat thread-safe?”


### Integration/Environment Bugs

AI bisa membantu tapi sering perlu info environment yang detail.

Prompt: β€œKode ini bekerja di development tapi gagal di production. Environment: [detail]. Kemungkinan penyebab dan solusinya?”


---

## 5. Keterbatasan AI dalam Debugging

### AI Tidak Bisa:
- Menjalankan kode dan melihat hasilnya (kecuali ada tool execution)
- Mengakses environment kamu secara langsung
- Mengetahui state runtime (variable values, memory)
- Melihat seluruh codebase secara bersamaan
- Memahami business logic yang tidak didokumentasikan

### Strategi Mengatasi Keterbatasan
  1. BERIKAN LEBIH BANYAK KONTEKS β†’ Paste error lengkap, jangan hanya pesan singkat β†’ Sertakan kode yang terkait, bukan hanya baris yang error

  2. BREAK DOWN MASALAH β†’ Alih-alih β€œdebug aplikasi saya”, break into smaller pieces β†’ β€œApa artinya error X di baris Y?”

  3. SIMULASIKAN β†’ Minta AI trace code step-by-step β†’ Berikan contoh input spesifik

  4. VERIFIKASI β†’ Jangan langsung terima solusi AI β†’ Test di environment-mu sendiri β†’ Pastikan fix tidak menimbulkan bug baru


---

## 6. Automated Debugging Workflows

### Pattern: Error-to-Fix Loop

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ERROR-TO-FIX LOOP β”‚ β”‚ β”‚ β”‚ 1. Encounter error β”‚ β”‚ ↓ β”‚ β”‚ 2. Copy error + context to AI β”‚ β”‚ ↓ β”‚ β”‚ 3. AI analyzes and suggests fix β”‚ β”‚ ↓ β”‚ β”‚ 4. Apply fix (manually, pahami dulu!) β”‚ β”‚ ↓ β”‚ β”‚ 5. Test β”‚ β”‚ ↓ β”‚ β”‚ 6a. Fixed? β†’ Done, commit β”‚ β”‚ 6b. New error? β†’ Back to step 2 with new context β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


### Pattern: Proactive Bug Prevention

Sebelum menjalankan kode, minta AI untuk review:

β€œReview kode berikut untuk potential bugs:

[kode]”


---

## Latihan (~15 menit)

### Tugas
Pilih salah satu:

### Pilihan A: Debug Error Nyata
Ambil error yang pernah kamu hadapi (atau buat sederhana) dan gunakan template Error Analysis untuk mendapatkan bantuan AI.

### Pilihan B: Trace dan Predict
Berikan kode kepada AI dan minta ia trace step-by-step. Bandingkan prediksi AI dengan hasil eksekusi nyata.

### Pilihan C: Bug Hunting
Minta AI membuat kode yang mengandung bug tersembunyi, lalu coba temukan dan minta AI memverifikasi.

---

## Poin-Poin Utama

1. **Konteks lengkap** = debugging lebih akurat (error message, kode, environment)
2. **Jelaskan expected vs actual** untuk membantu AI memahami masalah
3. **Gunakan teknik tracing** untuk logic errors yang sulit
4. **Verifikasi selalu** - AI bisa salah diagnosis
5. **AI tidak bisa menjalankan kode** - kamu perlu menjadi "eyes" AI
6. **Proactive review** sebelum run bisa mencegah bug
7. **Iteratif** - jika fix pertama tidak berhasil, berikan konteks baru

---

## Informasi Materi

- **Lisensi:** CC BY-NC-SA 4.0