Инструмент отладки Golang Delve

Go

 

DevleЭто очень хороший инструмент отладки golang, который поддерживает различные методы отладки, прямой запуск и отладку или подключение к запущенной программе golang для отладки.

Когда возникает проблема с онлайн-сервисом golang, Devle является обязательным онлайн-инструментом отладки.Если вы используете докер, вы также можете поместить Devle в образ докера для отладки кода.

Установить Девле

Установить Devle очень просто, просто запустите go get напрямую:

go get -u github.com/derekparker/delve/cmd/dlv

Если у вас версия go 1.5, установите переменную среды GO15VENDOREXPERIMENT=1 перед запуском go get. У меня версия go 1.10, ставить не надо.

Отладка сервиса golang с помощью Devle

Сначала напишите простой веб-сервис, а затем используйте Devle для его отладки.

Создайте main.go в папке $GOPATH/src/github.com/mytest.

 1 package main
 2 
 3 import (
 4     "fmt"
 5     "log"
 6     "net/http"
 7     "os"
 8 )
 9 
10 const port  = "8000"
11 
12 func main() {
13     http.HandleFunc("/hi", hi)
14 
15     fmt.Println("runing on port: " + port)
16     log.Fatal(http.ListenAndServe(":" + port, nil))
17 }
18 
19 func hi(w http.ResponseWriter, r *http.Request) {
20     hostName, _ := os.Hostname()
21     fmt.Fprintf(w, "HostName: %s", hostName)
22 }

Простой, веб-сервис, работающий на порту 8000, доступ к hi вернет имя машины. Номера строк в приведенном выше коде полезны и будут использоваться позже, когда мы сломаем точку.

Запустите наш main.go с помощью Delve

dlv debug ./main.go

 

Вы можете ввести help, чтобы увидеть справочную документацию

 

очень простые команды

Давайте сначала нажмем точку останова на основном методе:

b main.main

Затем запустите c, чтобы перейти к точке останова,

 

 

 

С точкой останова в func li мы можем использовать

b main.hi

Или используйте «file:linenumber», чтобы сломать точку

b /home/goworkspace/src/github.com/mytest/main.go:20

 

 

Теперь выполните команду, чтобы запустить службу. Посетите наш сервис, чтобы увидеть, останавливается ли метод hi.

curl localhost:8000/hi

Вы его видели? Он остановился 19 числа.

Введите n и нажмите Enter, чтобы выполнить один шаг,

Введите print (псевдоним p) для вывода информации о переменной

Введите args, чтобы распечатать всю информацию о параметрах метода.

Введите locals, чтобы напечатать все локальные переменные

 

Я не буду показывать вам другие команды, попробуйте сами.

Используйте Delve для подключения к работающей службе golang для отладки.

Сначала скомпилируйте наш main.go, а затем перейдите к main

go build main.go

./main

 

 

Затем используйте Delve для подключения к нашему проекту, сначала посмотрите на pid нашего проекта.

ps aux|grep main
dlv attach 29260

 

Прервите точку в методе hi, а затем выполните c, чтобы дождаться выполнения точки останова.

b /home/goworkspace/src/github.com/mytest/main.go:20

Посетите наш сервер и посмотрите, будет ли выполнена точка останова

curl localhost:8000/hi

 

 

Точка останова выполняется. Затем отлаживайте свой код!

 

автор:Ли ПэнИсточник:www.cnblogs.com/li-peng/Авторские права на эту статью принадлежат автору и блог-саду.Вы можете перепечатать ее, но это заявление должно быть сохранено без согласия автора, а ссылка на исходный текст должна быть дана в видном месте на странице статьи. , в противном случае сохраняется право на юридическую ответственность.