Go:
Debuggerin käyttö
Kuinka:
Go tarjoaa sisäänrakennetun virheenjäljitystyökalun nimeltä delve. Se on täysiverinen virheenjäljitystyökalu, jonka avulla voit suorittaa Go-ohjelmia askel askeleelta, tarkastella ohjelman muuttujia ja arvioida lausekkeita.
Aloittaaksesi sinun täytyy ensin asentaa delve. Voit tehdä sen suorittamalla:
go get -u github.com/go-delve/delve/cmd/dlvNyt, katsotaanpa kuinka virheenjäljitämme yksinkertaisen Go-ohjelman. Otetaan esimerkiksi ohjelma main.go:
package main
import "fmt"
func main() {
message := "Virheenjäljitys Go:ssa"
fmt.Println(message)
}Aloittaaksesi tämän ohjelman virheenjäljityksen, avaa terminaali projektikansiossa ja suorita:
dlv debugTämä komento kääntää ohjelman optimoinnit pois päältä (parantaakseen virheenjäljityskokemusta), käynnistää sen ja liittää siihen virheenjäljittimen.
Kun delve on käynnissä, olet interaktiivisessa virheenjäljittimen kuorissa. Tässä muutama peruskomento:
break main.mainasettaa keskeytyskohdanmain-funktioon.continuejatkaa ohjelman suoritusta kunnes keskeytyskohta osuu kohdalle.print messagetulostaamessage-muuttujan arvon.nextvie ohjelman suorituksen seuraavalle riville.quitpoistuu virheenjäljittimestä.
Tuloste, kun keskeytyskohta osuu kohdalle ja muuttujan arvo tulostetaan, saattaa näyttää tältä:
Breakpoint 1 at 0x49ecf3 for main.main() ./main.go:6
> main.main() ./main.go:6 (hits goroutine(1):1 total:1) (PC: 0x49ecf3)
1: package main
2:
3: import "fmt"
4:
5: func main() {
6: => message := "Virheenjäljitys Go:ssa"
7: fmt.Println(message)
8: }
(dlv) print message
"Virheenjäljitys Go:ssa"Näiden komentojen avulla voit astua läpi ohjelmasi, tarkastellen sen tilaa ymmärtääksesi sen käyttäytymistä ja tunnistaaksesi mahdolliset ongelmat.
Syväsukellus
Delve-valinta Go:n virheenjäljitystyökaluksi perinteisten työkalujen, kuten GDB:n (GNU Debugger), sijaan johtuu pääasiassa Go:n suoritusmallista ja ajonaikaisesta ympäristöstä. GDB:tä ei alun perin suunniteltu Go:n ajonaikaisen ympäristön huomioon ottamiseksi, mikä tekee delvestä sopivamman valinnan Go-kehittäjille. Delve on suunniteltu nimenomaan Go:lle ja tarjoaa intuitiivisemman virheenjäljityskokemuksen Go-rutiineille, kanaville ja muille Go-erityisille rakenteille.
Lisäksi delve tukee laajaa ominaisuuksien kirjoa, joita perus-GDB ei tarjoa työskennellessä Go-ohjelmien kanssa. Näihin kuuluu, mutta ei rajoitu: kiinnittyminen käynnissä oleviin prosesseihin virheenjäljitystä varten; ehdolliset keskeytyskohdat; ja monimutkaisten lausekkeiden arviointi, jotka voivat sisältää Go:n rinnakkaisuusprimitiivejä.
Vaikka delve on monien Go-kehittäjien valintana virheenjäljittimenä, on syytä huomata, että Go-työkalusarja sisältää myös kevyempiä virheenjäljitystukimuotoja, kuten sisäänrakennetun pprof-työkalun profilointiin ja trace-työkalun rinnakkaisuuden visualisointiin. Nämä työkalut voivat joskus tarjota nopeamman tai korkeamman tason tavan diagnosoida ohjelman suorituskykyongelmia tai rinnakkaisuusvirheitä, mikä saattaa olla täydentävä tai jopa suositeltavampi riippuen virheenjäljitysyhteydestä.