golangデバッグツールDelve


Develeは素晴らしいgolangデバッグツールで、多くのデバッグ方式をサポートし、直接デバッグを実行するか、attachを実行中のgolangプログラムにデバッグします.
オンライン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     。
  • 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