Go:
Использование отладчика
Как:
Go предоставляет встроенное средство для отладки под названием delve
. Это полнофункциональный инструмент отладки, который позволяет выполнять программы на Go шаг за шагом, проверять переменные программы и вычислять выражения.
Для начала вам необходимо установить delve
. Это можно сделать, запустив:
go get -u github.com/go-delve/delve/cmd/dlv
Теперь давайте отладим простую программу на Go. Рассмотрим программу main.go
:
package main
import "fmt"
func main() {
message := "Отладка в Go"
fmt.Println(message)
}
Чтобы начать отладку этой программы, откройте терминал в директории проекта и выполните:
dlv debug
Эта команда компилирует программу с отключенными оптимизациями (чтобы улучшить опыт отладки), запускает ее и подключает к ней отладчик.
После запуска delve
вы перейдете в интерактивный shell отладчика. Вот несколько основных команд:
break main.main
устанавливает точку останова в функцииmain
.continue
возобновляет выполнение программы до достижения точки останова.print message
будет печатать значение переменнойmessage
.next
продвигает выполнение программы к следующей строке.quit
выходит из отладчика.
Вывод при достижении точки останова и печати переменной может выглядеть так:
Точка останова 1 на 0x49ecf3 для main.main() ./main.go:6
> main.main() ./main.go:6 (срабатывания в горутине(1):1 всего:1) (PC: 0x49ecf3)
1: package main
2:
3: import "fmt"
4:
5: func main() {
6: => message := "Отладка в Go"
7: fmt.Println(message)
8: }
(dlv) print message
"Отладка в Go"
Используя эти команды, вы можете шаг за шагом пройтись по вашей программе, проверяя состояние по ходу выполнения, чтобы понять, как она работает, и определить любые проблемы.
Глубокое погружение
Выбор delve
в качестве предпочтительного инструмента отладки для Go вместо традиционных инструментов, таких как GDB (GNU Debugger), во многом обусловлен спецификой модели выполнения и среды выполнения Go. GDB изначально не был разработан с учетом среды выполнения Go, что делает delve
более подходящим выбором для разработчиков на Go. Delve
специально разработан для Go, предлагая более интуитивно понятный опыт отладки для горутин, каналов и других конструкций, специфичных для Go.
Кроме того, delve
поддерживает широкий спектр функций, выходящих за рамки того, что предлагает базовый GDB при работе с программами на Go. К ним относятся, помимо прочего: подключение к выполняющимся процессам для отладки; условные точки останова; и оценка сложных выражений, которые могут включать в себя примитивы конкуренции Go.
Хотя delve
является предпочтительным отладчиком для многих разработчиков Go, стоит отметить, что инструментарий Go также включает в себя более легковесные формы поддержки отладки, такие как встроенный инструмент pprof
для профилирования и инструмент trace
для визуализации конкуренции. Эти инструменты иногда могут предоставить более быстрый или более высокоуровневый путь для диагностики проблем с производительностью программы или ошибок конкуренции, которые могут быть дополнительными или даже предпочтительными в зависимости от контекста отладки.