Sebagai bahasa pengaturcaraan berprestasi tinggi, Golang digunakan oleh semakin ramai pengaturcara, dan penyahpepijatan merupakan bahagian yang sangat penting dalam proses pembangunan. Oleh itu, artikel ini akan memperkenalkan kaedah penyahpepijatan Golang dan meneroka cara untuk menyahpepijat program Golang dengan lebih baik.
1. Kaedah nyahpepijat
1. Pengelogan
Pengelogan ialah kaedah penyahpepijatan yang paling asas dengan menambahkan kaedah pencetakan log, anda boleh lebih memahami status berjalan daripada program tersebut. Di Golang, kita boleh menggunakan pakej log perpustakaan standard untuk mencapai ini. Ia menyediakan tiga peringkat percetakan, iaitu Print, Printf dan Println, yang boleh digunakan secara fleksibel mengikut keperluan.
Contohnya:
`
import "log"
func main() {
log.Println("这是一个普通的log输出") log.Printf("这是一个%s输出\n", "格式化") log.Print("这是一个没有换行的输出")
}
`
2.pprof
pprof ialah alat analisis prestasi yang boleh membantu kami memahami kesesakan prestasi program. Di Golang, pprof disokong oleh pustaka standard Kami boleh melakukan analisis prestasi dengan menambahkan antara muka untuk mengeksport data yang diperlukan oleh pprof dalam kod dan mengakses nombor port apabila program sedang berjalan.
Contohnya:
`
import (
"fmt" "log" "net/http" _ "net/http/pprof"
)
func main() {
go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }() // 其他业务代码 select {}
}
`
Di sini, goroutine disalin dalam fungsi utama untuk memulakan perkhidmatan web pprof. Selepas memulakan program, anda boleh melakukan analisis prestasi dengan mengakses http://localhost:6060/debug/pprof/ dalam penyemak imbas. Arahan pprof yang biasa digunakan termasuk: atas, web, senarai, dsb., yang digunakan untuk membantu menganalisis kesesakan prestasi dalam kod.
3. Alat nyahpepijat
Golang mempunyai banyak alatan nyahpepijat dan dua alatan yang disyorkan ialah dlv dan gdb.
dlv ialah alat penyahpepijatan Golang yang diselenggara secara rasmi oleh Google, yang lebih mudah digunakan berbanding gdb. Ia boleh dipasang melalui go get.
gdb ialah alat penyahpepijatan di bawah Linux yang boleh menyokong penyahpepijatan dalam berbilang bahasa pengaturcaraan. Apabila menyahpepijat program Golang, anda perlu memasang runtime/cgo dalam pustaka standard Go.
2. Kemahiran penyahpepijatan
1. Tambahkan titik putus dalam editor, atur cara akan berhenti apabila ia mencapai titik putus, dan anda boleh melakukan penyahpepijatan satu langkah atau melihat pembolehubah. Apabila menyahpepijat atur cara rangkaian, adalah disyorkan untuk mencetak paket data rangkaian dan melihat kandungan data.
2. Penyahpepijatan titik putus bersyarat
Dalam sesetengah kes, kita perlu melaksanakan bahagian kod terhadap pembolehubah atau syarat tertentu. Pada masa ini, penyahpepijatan titik putus bersyarat amat berguna. Sebagai contoh, semasa pelaksanaan program, kita perlu menyemak sama ada nilai pembolehubah x lebih besar daripada y Kita boleh menambah ungkapan "x>y" kepada keadaan titik putus, supaya apabila atur cara melaksanakan ke titik putus, hanya apabila. x> Ia akan berhenti hanya apabila keadaan y ditetapkan.
3. Penyahpepijatan titik terperangkap
Penyahpepijatan titik terperangkap boleh mengetahui titik perlahan dalam program dan mengoptimumkannya dengan berkesan. Kami boleh menambah alat pemasaan pada kod, menandakan masa mula dan tamat setiap blok kod, dan menganalisis masa pelaksanaan setiap blok kod untuk mencari kesesakan program.
Contohnya:
`
startTime := time.Now().UnixNano() //Start timetime.Sleep(time.Second) //Melaksanakan perniagaan logik
masa tamat := masa.Sekarang().UnixNano() //Masa tamat
log.Printf("Seluruh masa: %d nanosaat", masa mula-masa tamat)
`
Kuncinya ialah merekodkan masa pada tahap nanosaat dan mengoptimumkan titik paling perlahan dalam analisis kemudian.
3. Ringkasan
Berbanding dengan bahasa lain, penyahpepijatan Golang mempunyai prestasi yang lebih baik dan kaedah penyahpepijatan yang lebih fleksibel. Dalam pembangunan sebenar, kami boleh memilih kaedah penyahpepijatan secara fleksibel mengikut keperluan dan menggabungkan alat dan teknik penyahpepijatan untuk mengekalkan program Golang kami dengan lebih baik.
Atas ialah kandungan terperinci Terokai cara untuk menyahpepijat program Golang dengan lebih baik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!