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