Debugging dengan Hardhat (Stack Trace Error Solidity)
Penjelasan
Salah satu keunggulan Hardhat Network dibanding node EVM lain adalah kemampuannya menampilkan stack trace Solidity yang jelas dan detail saat sebuah transaksi revert — mencantumkan baris kode persis penyebab revert, bukan hanya error generik dari EVM. Ini sangat membantu, terutama untuk error seperti out-of-gas atau revert tanpa pesan yang biasanya sulit ditelusuri. Stack trace otomatis muncul di output test yang gagal tanpa konfigurasi tambahan. Untuk transaksi yang lebih kompleks (melibatkan banyak internal call), Hardhat menampilkan call stack lengkap layer demi layer, memudahkan mengidentifikasi contract dan fungsi mana yang menjadi sumber masalah sebenarnya.
Contoh Konsep
it("harus menampilkan stack trace jelas saat revert", async function () {
const Bank = await ethers.getContractFactory("SimpleBank");
const bank = await Bank.deploy();
// Transaksi ini akan revert karena saldo tidak cukup;
// Hardhat menampilkan baris require() persis penyebabnya
await expect(bank.withdraw(100)).to.be.revertedWith(
"Insufficient balance"
);
});
Praktikum
Buat test yang sengaja memicu revert pada fungsi withdraw tanpa deposit sebelumnya, jalankan tanpa expect.revertedWith untuk melihat stack trace mentah yang ditampilkan Hardhat.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan bungkus setiap pemanggilan dengan try-catch saat sedang debugging — biarkan error naik apa adanya supaya stack trace lengkap Hardhat tampil di terminal.