Dalam beberapa tahun kebelakangan ini, Golang telah menjadi bahasa yang semakin popular dan aplikasinya semakin meluas, menarik perhatian ramai pembangun. Walau bagaimanapun, bagi pembangun yang baru menggunakan Golang, penggunaan dan penyahpepijatan merupakan masalah yang sukar untuk diselesaikan Artikel ini akan memperkenalkan kaedah penggunaan dan penyahpepijatan Golang secara terperinci.
1. Deployment
Golang ialah bahasa yang disusun dan kod bertulis perlu dihimpun ke dalam fail boleh laku sebelum ia boleh lari. Terdapat dua cara penyusunan: kompilasi statik dan kompilasi dinamik. Penyusunan statik akan membungkus perpustakaan yang diperlukan oleh program ke dalam fail boleh laku. Fail boleh laku bersaiz lebih besar, tetapi tidak perlu bergantung pada perpustakaan luaran pada masa jalan manakala kompilasi dinamik memerlukan pemautan dinamik fail perpustakaan pada masa jalan daripada fail boleh laku adalah Lebih Kecil, tetapi memerlukan pergantungan pada perpustakaan luaran.
Kompilasi statik:
$ go build -o main main.go
Kompilasi dinamik:
$ go build -o main.go -ldflags "-linkmode=external"
Antaranya, parameter -linkmode=external menunjukkan fail perpustakaan yang diperlukan untuk pemautan dinamik.
Di Golang, alat pengurusan pakej lalai ialah go mod, jadi anda perlu menetapkan pembolehubah persekitaran untuk menentukan laluan penyimpanan kod dan sumber muat turun. Dalam sistem Linux, pembolehubah persekitaran boleh ditetapkan dengan mengubah suai fail ~/.bash_profile.
eksport GO111MODULE=on
eksport GOPROXY=https://goproxy.cn,direct
eksport GOSUMDB=sum.golang.google.cn
Antaranya, GO111MODULE bermaksud menggunakan go mod;GOPROXY mewakili sumber muat turun yang digunakan semasa go get; GOSUMDB mewakili pengesahan sama ada pakej kod yang dimuat turun ialah versi yang dikeluarkan secara rasmi.
Docker boleh membantu kami membungkus program Golang ke dalam imej untuk penggunaan mudah pada mana-mana platform. Mula-mula anda perlu menulis fail Docker:
DARI golang:1.15.0-alpine
WORKDIR /app
COPY .
RUN go build -o main .
CMD [" /app /main"]
Antaranya, FROM menentukan sumber imej; WORKDIR menentukan direktori kerja; COPY menyalin fail dalam folder semasa ke imej; RUN melaksanakan arahan kompilasi; CMD menentukan arahan berjalan .
Kemudian laksanakan arahan berikut:
$ docker build -t myapp .
$ docker run -p 8080:8080 myapp
Antaranya, -t menentukan nama label; -p menentukan pemetaan port.
2. Nyahpepijat
Golang mempunyai set alat penyahpepijatan terbina dalam - go tool pprof, yang boleh membantu kami menganalisis CPU dan keadaan penggunaan memori. Mula-mula, anda perlu mengimport pakej pprof dalam kod dan menambah kod analisis prestasi:
import (
"net/http" _ "net/http/pprof"
)
func main() {
go func() { http.ListenAndServe("0.0.0.0:6060", nil) }() // your code here
}
Antaranya, pprof tidak perlu dipanggil semasa mengimport, ia secara automatik akan mendaftar laluan. Kemudian laksanakan arahan berikut:
$ go tool pprof http://localhost:6060/debug/pprof/profile
Arahan ini akan mencetak hasil analisis penggunaan CPU dalam konsol.
Jika pengecualian berlaku dalam atur cara, anda boleh menggunakan penyahpepijat untuk nyahpepijatnya. Terdapat banyak penyahpepijat dalam Golang Berikut ialah dua jenis:
Penyahpepijat GDB:
Anda perlu menentukan parameter -g untuk menambah maklumat penyahpepijatan semasa menyusun, dan kemudian laksanakan arahan berikut:
$ gdb myapp
(gdb) break main.main
(gdb) run
Mengambil titik putus sebagai contoh, apabila pelaksanaan mencapai titik putus, ia akan berhenti berjalan dan masukkan mod nyahpepijat.
Delve debugger:
Delve ialah penyahpepijat berkuasa yang menyokong penyahpepijat jauh dan penyahpepijatan rangkaian. Mula-mula anda perlu memasang Delve:
$ go get -u github.com/go-delve/delve/cmd/dlv
Kemudian laksanakan arahan berikut untuk memulakan penyahpepijat:
$ dlv debug myapp
Arahan ini akan memulakan penyahpepijat dan membuka antara muka REPL (Read-Eval-Print Loop), yang boleh digunakan untuk nyahpepijat.
Ringkasan
Artikel ini memperkenalkan kaedah penempatan dan penyahpepijatan Golang: kompilasi, pembolehubah persekitaran, Docker, pprof, GDB dan Delve. Saya harap ia dapat membantu pembangun menguasai kemahiran Golang dengan lebih baik.
Atas ialah kandungan terperinci Pengenalan terperinci kepada kaedah penggunaan dan penyahpepijatan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!