Study
Foundry

Debugging dengan forge debug/traces

Penjelasan

Saat test gagal atau transaksi revert dengan alasan tidak jelas, Foundry menyediakan dua alat debugging utama: call traces dan debugger interaktif. Menjalankan `forge test -vvvv` menampilkan trace lengkap tiap pemanggilan fungsi (termasuk internal call, event yang di-emit, dan nilai return), memudahkan melihat persis di mana logika menyimpang dari harapan. `forge debug` membuka debugger interaktif berbasis opcode EVM, memungkinkan kita melangkah instruksi demi instruksi (step into/over) sambil melihat isi stack, memory, dan storage — mirip debugger pada bahasa pemrograman konvensional, tapi bekerja di level bytecode EVM.

Contoh Konsep

# Jalankan test dengan trace maksimal (level 4 = paling detail)
forge test --match-test testWithdraw -vvvv

# Buka debugger interaktif untuk satu fungsi tertentu
forge debug --debug src/Vault.sol --sig "withdraw(uint256)" 100

# Di dalam debugger: gunakan tombol panah untuk step instruksi,
# 'q' untuk keluar

Praktikum

Jalankan salah satu test yang sengaja kamu buat gagal (misal expectRevert dengan pesan salah) dengan -vvvv, lalu identifikasi baris mana yang menyebabkan kegagalan dari trace-nya.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Tambah level 'v' secara bertahap (mulai -vv, lalu -vvv, -vvvv) daripada langsung pakai level tertinggi — output makin detail dan bisa membanjiri terminal untuk test suite besar.