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/Авторские права на эту статью принадлежат автору и блог-саду.Вы можете перепечатать ее, но это заявление должно быть сохранено без согласия автора, а ссылка на исходный текст должна быть дана в видном месте на странице статьи. , в противном случае сохраняется право на юридическую ответственность.