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 := "Debugging in Go"
fmt.Println(message)
}
Щоб почати зневадження цієї програми, відкрийте термінал у директорії проекту та виконайте:
dlv debug
Ця команда компілює програму з вимкненими оптимізаціями (для покращення досвіду зневадження), запускає її та приєднує до неї зневаджувач.
Одразу після запуску delve
, ви перебуваєте в інтерактивній оболонці зневаджувача. Ось кілька базових команд:
break main.main
встановлює точку зупинки на функціїmain
.continue
відновлює виконання програми до досягнення точки зупинки.print message
виводить значення змінноїmessage
.next
продовжує виконання програми до наступного рядка.quit
виходить із зневаджувача.
Вивід даних при досягненні точки зупинки та виведенні змінної може виглядати так:
Breakpoint 1 at 0x49ecf3 for main.main() ./main.go:6
> main.main() ./main.go:6 (hits goroutine(1):1 total:1) (PC: 0x49ecf3)
1: package main
2:
3: import "fmt"
4:
5: func main() {
6: => message := "Debugging in Go"
7: fmt.Println(message)
8: }
(dlv) print message
"Debugging in Go"
Використовуючи ці команди, ви можете просуватися крок за кроком через вашу програму, перевіряючи стан, щоб зрозуміти, як вона поводиться, та ідентифікувати будь-які проблеми.
Поглиблений Розгляд
Вибір delve
як інструменту зневадження для Go насамперед зумовлений особливостями моделі виконання та середовища виконання Go. GDB (GNU Debugger) спочатку не був розроблений з урахуванням середовища виконання Go, що робить delve
більш підходящим вибором для розробників на Go. Delve
спеціально розроблений для Go, пропонуючи більш інтуїтивно зрозумілий досвід зневадження для горутин, каналів та інших специфічних конструкцій Go.
Крім того, delve
підтримує широкий спектр функцій, які виходять за рамки основних можливостей GDB при роботі з програмами на Go. Це включає, але не обмежується, приєднанням до запущених процесів для зневадження; умовними точками зупинки; та оцінкою складних виразів, які можуть включати примітиви конкуренції Go.
Хоча delve
є основним зневаджувачем для багатьох розробників на Go, варто зауважити, що інструментарій Go також включає більш легкі форми підтримки зневадження, такі як вбудований інструмент pprof
для профілювання та інструмент trace
для візуалізації конкуренції. Ці інструменти іноді можуть забезпечити швидший або більш високорівневий шлях для діагностики проблем з продуктивністю програми або помилок конкуренції, що може бути доповненням або навіть кращим вибором залежно від контексту зневадження.