Mungkin Anda pasti pernah melihat aplikasi yang sudah live
terdapat error
atau aplikasi tersebut berhenti ditengah-tengah proses yang sedang kita jalankan. Tentunya hal ini menjadi tidak nyaman karena kita harus mengulang proses tersebut dari awal. Proses yang secara tiba-tiba berhenti itu biasanya dinamakan dengan bug
. Bug sendiri adalah suatu error yang terjadi akibat suatu error yang terjadi akibat tidak sempurnyanya sebuah instruksi atau proses yang dijalankan. Penyebab bug itu banyak sekali faktornya, mungkin dari proses pembuatannya tidak sempurna, atau ketika menjalankan suatu proses yang membutuhkan sesuatu misalnya resource dan kebutuhan itu tidak dapat dipenuhi maka akan timbul bug
.
Proses untuk mencari bug
tersebut biasanya dinamakan debugging
atau proses pencarian dalam baris kode yang menyebabkan error
itu terjadi. Seorang programmer pasti akan familiar dengan kata-kata ini karena memang bisa jadi itu adalah pekerjaan sehari-hari yang bisasa lakukan. Ketika terjadi bug
langkah yang dilakukan biasanya lihat reporting dari yang melaporkan bisa dari user
langsung atau sesama developer yg menemukan bug
tersebut. Setelah itu programmer langsung menelusuri kode yang sudah dibuat dan yang sedang live
lalu baru melakukan debugging
bisa dilokal atw di environment lokal.
Nah, pada postingan kali ini Santekno akan memberikan tutorial cara melakukan debuging
golang pada VSCode, Sebelum melanjutkan bagaimana cara debug pada Visual Studio Code, beberapa yang perlu disipakan
Persiapan
- Anda paham beberapa syntax golang dan penulisannya
- Usahakan sudah install
go
di komputer Anda - Lakukan set
GOPATH
. (secara default biasanya di~/go
) - Buka aplikasi Visual Studio Code
- Install plugin VSCode-Go
Setelah semuanya telah terinstall, ketika Anda membuka fail .go
di VSCode, maka Anda akan melihat dibagian bawah kanan di dalam status bar Install Analysis Tools
. Coba klik dan link tersebut akan melakukan beberapa instal packages Go agar nanti saat melanjutkan bisa lebih efektif dan efisien.
Ada satu plugin yang perlu Anda install yaitu Delve. Plugin ini open-source debugger untuk pengguna Go language. Jika Anda ingin lebih tau cara install lebih lanjut bisa lihat.
Membuat Contoh Kode aplikasi
Santekno akan membuat 2 kode sample golang:
- Program Go untuk melakukan generate a JSON
- Kita akan menulis suatu fungsi dan membuat unit test dan bagaimana cara kita melakukan debug test di VS Code
Berikut ini source code untuk contoh program yang pertama. Buat file main.go
seperti dibawah ini
package main
import (
"encoding/json"
"fmt"
"log"
)
type Pandawa struct {
Nama string `json:"nama"`
Julukan string `json:"nama_julukan"`
Titisan string `json:"titisan"`
DiangkatRaja bool `json:"raja"`
}
func (p *Pandawa) diAngkatRaja() {
p.DiangkatRaja = true
}
func main() {
pandawas := []Pandawa{
{
Nama: "Yudistira",
Julukan: "Dhramasuta",
Titisan: "Dewa Yama",
},
{
Nama: "Bima",
Julukan: "Bayusutha",
Titisan: "Dewa Bayu",
},
{
Nama: "Arjuna",
Julukan: "Partha",
Titisan: "Dewa Indra",
},
{
Nama: "Nakula",
Julukan: "pengasuh kuda",
Titisan: "Dewa Aswin",
},
{
Nama: "Sadewa",
Julukan: "Brihaspati",
Titisan: "Dewa Aswin",
},
}
pandawas[0].diAngkatRaja()
jsonBytes, err := json.Marshal(pandawas)
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(jsonBytes))
}
Kode diatas kita mendefinisikan suatu struct Pandawa
, dan membuat array
dari struct tersebut, array yang pertama kita ubah status dengan memanggil fungsi diAngkatRaja()
lalu setelah itu convert hasilnya menjadi JSON dan terakhir kita cetak dengan STDOUT.
Anda bisa lihat jika dijalankan contoh program tersebut dengan
go run main.go
[{"nama":"Yudistira","nama_julukan":"Dhramasuta","titisan":"Dewa Yama","raja":true},{"nama":"Bima","nama_julukan":"Bayusutha","titisan":"Dewa Bayu","raja":false},{"nama":"Arjuna","nama_julukan":"Partha","titisan":"Dewa Indra","raja":false},{"nama":"Nakula","nama_julukan":"pengasuh kuda","titisan":"Dewa Aswin","raja":false},{"nama":"Sadewa","nama_julukan":"Brihaspati","titisan":"Dewa Aswin","raja":false}]
Melakukan Debug Dengan Breakpoints (tompel merah)
Untuk memulai debug, kita memerlukan beberapa konfigurasi yaitu dengan cara tekan tombol Ikon Debug pada kiri panel Visutl Studio Code, selanjutnya pilih tekan tombol Run and Debug
.
Maka akan terlihat seperti gambar diatas jika kita sudah tekan tombol Run and Debug
.
Lanjut kita akan menambahkan suatu breakpoint, karena kita ingin tahu lebih dalam bagaimana cara melakukan debugging di Visual Studio Code.
Tambahkan breakpoint
pada baris 20 dengan cara tekan nomor baris yang ada disebelah kiri, maka Anda akan melihat merah
.
Selanjutnya, tekan F5
atau tekan Run and Debug
maka debugger akan menjalankan aplikasi dan berhenti pada titik point yang merah.
Pada bagian diatas terlihat aplikasi tertahan di breakpoint, sehingga kita bisa melihat beberapa variabel yang sedang berjalan, bahkan ketika kita melakukan pengecekan tiap kode kita bisa melihat berpubahan isi dari tiap variabel yang sudah kita deklarasikan.
Untuk melihat variabel local dan global kita bisa lihat pada panel bagian kiri, sedangkan jika kita ingin melihat log
jalannya aplikasi kita bisa lihat kotak merah pada bagian bawah.
Satu hal lagi, akan muncul Debug Toolbar
pada bagian atas kiri dekat panel yang digunakan untuk melakukan perjalanan aplikasi, bisa di lanjut, mundur, ataupun jalankan semua proses-nya sampai selesai.
Lanjut, Anda tekan Step Over
pada Debug Toolbar
, maka akan terlihat aplikasi tertahan di baris ke 49.
Kita pindah ke panel bagian kiri untuk melihat beberapa variabel yang sedang berjalan pada posisi berhenti ini.
Kita bisa melihat status dan isi dari suatu variable itu pada waktu tertentu dan kita juga bisa melihat tumpukan proses atau fungsi yang sedang berjalan di fungsi utama.
Saat kita lakukan Step Over
lagi sampai melewati baris ke 49, maka salah satu dari Pandawa yaitu Yudistira diangkat
menjadi raja.
Membuat Kondisi pada Breakpoints (tompel merah)
VSCode breakpoints (tompel merah) juga memberikan Anda pilihan untuk memberikan suatu expression
biasanya ekspresi ini berupa boolean
.
Misalkan, pada baris ke 49, pandawas[0].diAngkatRaja()
, kita bisa menambahkan kondisi pada breakpointnya bahwa akan dimunculkan ketika bernilai true
, misalkan breakpoint ini bisa berjalan jika pandawas[0].Titisan == "Dewa Angin"
.
Untuk melakukan itu, kita klik kanan pada breakpoint baris ke 49 lalu pilih Edit Breakpoint...
Tambahkan kondisi yang akan kita jadikan aturan expression
lalu ENTER
.
Sekarang kita jalankan debugger tersebut dengan menekan F5
, maka debugger tersebut tidak akan stop pada breakpoint tersebut. Aplikasi tetap jalan sampai Anda melihat hasil pada panel debug console
dibawahnya.
kebnapa debugger tidak berhenti di breakpoint tersebut? Karena Dari semua pandawas
tidak ada yang memiliki Titisan
dari Dewa Angin
maka debugger tersebut menganggap expression itu FALSE
.
Jika Anda ingin aplikasi itu berhenti pada breakpoint tersebut, coba Anda ubah satu pandawas
yaitu Yudisthira
dengan titisan Dewa Angin
, maka debugger akan berhenti di breakpoints tersebut sesuai aturannya. Bisa kan? Selamat mencoba.
Melakukan Debugging pada unit test
Selain kita langsung menjalankan debugging pada main aplikasi, kita juga bisa melakukan debugging pada unit test. Unit test ini biasanya dibuat untuk melakukan pengetesan kode kita agar bisa sesuai dengan reuirement-nya.
Kita coba buat unit test sebuat fungsi aritmatika pertambahan.
func tambah(a, b int) int {
return a + b
}
Jika Anda menggunakan VSCode ada plugin
yang dapat memudahkan untuk membuat unit test dengan melakukan generate saja. Caranya bisa kita lihat dibawah ini.
Maka akan terbuat file main_test.go
di dalam folder yang sama, maka hasilnya akan seperti dibawah ini.
package main
import "testing"
func Test_tambah(t *testing.T) {
type args struct {
a int
b int
}
tests := []struct {
name string
args args
want int
}{
{
name:"pertambahan 1+2",
args: args{
a:1,
b:2,
},
want: 3,
}
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := tambah(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("tambah() = %v, want %v", got, tt.want)
}
})
}
}
Jika sudah terinstall juga VSCode-Go, Anda juga bisa melihat opsi diatas fungsi unit test.
Anda tekan run test
digunakan untuk menjalan kan test lalu hasilnya akan terlihat langsung di Output
window panel bawah dan debug test
digunakan untuk menjalan kan unit test tetapi kita juga ingin melakukan brekpoints (berhenti disuatu baris tertentu) untuk melakukan pengecekan. Ini juga bisa dilakukan jika Anda membutuhkan pada saat melakukan debugging pada unit test.
Kesimpulan
Debuggin adalah bagian penting dari pengembangan perangkat lunak dan bagi para programmer terutama jika Anda menggunakan Visual Studio Code sebagai IDE yang dipilih untuk menjalankan coding. VSCode bisa jadi mempermudah Anda untuk mengerjakan pekerjaan karena didukung dengan Debugger tersebut.
Kita telah memberikan penjelasan konsep dasar dari debugging
, maka jangan ragu lagi untuk memakainya untuk menunjang pekerjaan Anda. Biasanya untuk mempermudah para programmer golang terbiasa dengan menggunakan fmt.Prinln
untuk mendapatkan status atau isi dari variable terkininya. Setelah Anda mengenal debugging
ini setidaknya Anda bisa mengurangi penamhahan kode seperti itu kode kita tetap tidak ada perubahan.
Selamat mencoba.