BAB 02
Estimasi Waktu: 35-45 menit Prasyarat: 01-ai-assisted-coding.md
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.
Setelah mempelajari materi ini, kamu akan mampu:
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
## Error yang Saya Temui
**Error Message:**
[paste error lengkap termasuk stack trace]
**Kode Terkait:**
```[bahasa]
[paste kode yang menyebabkan error]
Konteks:
Analisis:
### Template: Unexpected Behavior
Kode:
[kode]
Input: [apa yang dimasukkan] Expected Output: [apa yang seharusnya] Actual Output: [apa yang keluar]
Environment:
Bantu saya:
### Template: Performance Issue
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:
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:
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
BERIKAN LEBIH BANYAK KONTEKS β Paste error lengkap, jangan hanya pesan singkat β Sertakan kode yang terkait, bukan hanya baris yang error
BREAK DOWN MASALAH β Alih-alih βdebug aplikasi sayaβ, break into smaller pieces β βApa artinya error X di baris Y?β
SIMULASIKAN β Minta AI trace code step-by-step β Berikan contoh input spesifik
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