golangデバッグツールDelve
Develeは素晴らしいgolangデバッグツールで、多くのデバッグ方式をサポートし、直接デバッグを実行するか、attachを実行中のgolangプログラムにデバッグします.
オンラインgolangサービスに問題が発生した場合、Develeは必ず多くのオンラインデバッグツールであり、dockerを使用すれば、Develeをdockerミラーに打ち込み、コードをデバッグすることもできます.
Develeのインストールは非常に簡単で、
go get -u github.com/derekparker/delve/cmd/dlv
goバージョンが1.5の場合は環境変数GO 15 VENDOREXPERIMENT=1を設定してgo getを実行します.私のgoバージョンは1.10で、設定しません.
簡単なウェブサービスを書いてから、Develeを使ってデバッグします.
$GOPATH/src/github.com/mytestフォルダの下にmainを作成します.go
簡単でしょう.8000ポートで動作するwebサービスで、hiにアクセスするとマシンの名前が返されます.上のコードの行番号は役に立ちます.ポイントを中断するときに使います.
Delveを使用してmainを実行します.go
dlv debug ./main.go
ヘルプドキュメントを参照するにはhelpを入力してください
簡単なコマンドです
まずmainメソッドにブレークポイントを打ってみましょう.
b main.main
そしてcを実行してブレークポイントまで実行し、
func liでブレークポイントを打つと、
b main.hiまたは「ファイル:行番号」を使用してポイントを中断する
b/home/goworkspace/src/github.com/mytest/main.go:20
今continueを実行してサービスを走らせます.私たちのサービスにアクセスして、hiの方法が止まるかどうかを見てみましょう.
curl localhost:8000/hi n入力nリターンは、次の行 に実行される.はsを入力して車に戻り、単一ステップで を実行する.入力print(別名p)出力変数情報 入力argsは、すべてのメソッドパラメータ情報 を印刷する.入力localsすべてのローカル変数 を印刷
他の命令はここで皆さんにプレゼンテーションしないで、自分で手を動かしてみます.
Delveを実行中のgolangサービスに添付してデバッグし、まず私たちのmainをコンパイルします.goそして行main
go build main.go
./main
それからDelveを使って私たちのプロジェクトに添付して、まず私たちのプロジェクトのpidを見てみましょう.
ps aux|grep maindlv attach 29260
hiメソッドでポイントを中断し、cを実行してブレークポイントの実行を待つ.
b/home/goworkspace/src/github.com/mytest/main.go:20
サーバにアクセスし、ブレークポイントが実行されるかどうかを確認します.
curl localhost:8000/hi
ブレークポイントが実行されました.コードをデバッグしましょう!
転載先:1.https://www.cnblogs.com/li-peng/p/8522592.html
オンラインgolangサービスに問題が発生した場合、Develeは必ず多くのオンラインデバッグツールであり、dockerを使用すれば、Develeをdockerミラーに打ち込み、コードをデバッグすることもできます.
インストールデバイス
Develeのインストールは非常に簡単で、
go get
を直接実行すればいいです.go get -u github.com/derekparker/delve/cmd/dlv
goバージョンが1.5の場合は環境変数GO 15 VENDOREXPERIMENT=1を設定してgo getを実行します.私のgoバージョンは1.10で、設定しません.
Develデバッグgolangサービスの使用
簡単なウェブサービスを書いてから、Develeを使ってデバッグします.
$GOPATH/src/github.com/mytestフォルダの下にmainを作成します.go
package main
import (
"fmt"
"log"
"net/http"
"os"
)
const port = "8000"
func main() {
http.HandleFunc("/hi", hi)
fmt.Println("runing on port: " + port)
log.Fatal(http.ListenAndServe(":" + port, nil))
}
func hi(w http.ResponseWriter, r *http.Request) {
hostName, _ := os.Hostname()
fmt.Fprintf(w, "HostName: %s", hostName)
}
簡単でしょう.8000ポートで動作するwebサービスで、hiにアクセスするとマシンの名前が返されます.上のコードの行番号は役に立ちます.ポイントを中断するときに使います.
Delveを使用してmainを実行します.go
dlv debug ./main.go
ヘルプドキュメントを参照するにはhelpを入力してください
簡単なコマンドです
まずmainメソッドにブレークポイントを打ってみましょう.
b main.main
そしてcを実行してブレークポイントまで実行し、
func liでブレークポイントを打つと、
b main.hiまたは「ファイル:行番号」を使用してポイントを中断する
b/home/goworkspace/src/github.com/mytest/main.go:20
今continueを実行してサービスを走らせます.私たちのサービスにアクセスして、hiの方法が止まるかどうかを見てみましょう.
curl localhost:8000/hi
, 19 。
他の命令はここで皆さんにプレゼンテーションしないで、自分で手を動かしてみます.
Delveを実行中のgolangサービスに添付してデバッグし、まず私たちのmainをコンパイルします.goそして行main
go build main.go
./main
それからDelveを使って私たちのプロジェクトに添付して、まず私たちのプロジェクトのpidを見てみましょう.
ps aux|grep maindlv attach 29260
hiメソッドでポイントを中断し、cを実行してブレークポイントの実行を待つ.
b/home/goworkspace/src/github.com/mytest/main.go:20
サーバにアクセスし、ブレークポイントが実行されるかどうかを確認します.
curl localhost:8000/hi
ブレークポイントが実行されました.コードをデバッグしましょう!
転載先:1.https://www.cnblogs.com/li-peng/p/8522592.html