Go: интерактивный отладчик

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: интерактивный отладчик

Непрочитанное сообщение Olej » 15 мар 2023, 18:26

Для Go существует интерактивный отладчик Delve.
Это совершенно отдельный от GoLang продукт.
И он входит в стандартные репозитории дистрибутивов Linux для стандартной установки установки:

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples.work/debug$ aptitude search Delve | grep Go
p  delve - debugger for the Go programming language
(Я отфильтровал вывод по Go только для того, чтобы не спутать с подобного названия инструментом JavaScript.)

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples.work/debug$ aptitude show delve
Пакет: delve
Версия: 1.8.1-1
Новый: да
Состояние: не установлен
Приоритет: необязательный
Раздел: universe/devel
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: amd64
Размер в распакованном виде: 12,3 M
Зависит: libc6 (>= 2.34)
Описание: debugger for the Go programming language
 Delve enables you to interact with your program by controlling the execution of the process, evaluating variables, and providing information of thread/goroutine
 state, CPU register state and more.
Домашняя страница: https://github.com/go-delve/delve

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples.work/debug$ sudo apt install delve
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
  delve
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 4 пакетов не обновлено.
Необходимо скачать 3.865 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 12,3 MB.
Пол:1 http://mirror.mirohost.net/ubuntu jammy/universe amd64 delve amd64 1.8.1-1 [3.865 kB]
Получено 3.865 kB за 2с (1.962 kB/s)
Выбор ранее не выбранного пакета delve.
(Чтение базы данных … на данный момент установлен 536301 файл и каталог.)
Подготовка к распаковке …/delve_1.8.1-1_amd64.deb …
Распаковывается delve (1.8.1-1) …
Настраивается пакет delve (1.8.1-1) …
Обрабатываются триггеры для man-db (2.10.2-1) …

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: интерактивный отладчик

Непрочитанное сообщение Olej » 15 мар 2023, 18:29

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples.work/debug$ apt content delve
/.
/usr
/usr/bin
/usr/bin/dlv
/usr/share
/usr/share/doc
/usr/share/doc/delve
/usr/share/doc/delve/api
/usr/share/doc/delve/api/ClientHowto.md.gz
/usr/share/doc/delve/api/dap
/usr/share/doc/delve/api/dap/README.md.gz
/usr/share/doc/delve/api/json-rpc
/usr/share/doc/delve/api/json-rpc/README.md
/usr/share/doc/delve/api/README.md
/usr/share/doc/delve/backend_test_health.md
/usr/share/doc/delve/changelog.Debian.gz
/usr/share/doc/delve/cli
/usr/share/doc/delve/cli/expr.md.gz
/usr/share/doc/delve/cli/getting_started.md
/usr/share/doc/delve/cli/locspec.md
/usr/share/doc/delve/cli/README.md.gz
/usr/share/doc/delve/cli/starlark.md.gz
/usr/share/doc/delve/copyright
/usr/share/doc/delve/EditorIntegration.md
/usr/share/doc/delve/faq.md
/usr/share/doc/delve/KnownBugs.md
/usr/share/doc/delve/README.md
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/dlv.1.gz
/usr/share/man/man1/dlv-attach.1.gz
/usr/share/man/man1/dlv-backend.1.gz
/usr/share/man/man1/dlv-connect.1.gz
/usr/share/man/man1/dlv-core.1.gz
/usr/share/man/man1/dlv-dap.1.gz
/usr/share/man/man1/dlv-debug.1.gz
/usr/share/man/man1/dlv-exec.1.gz
/usr/share/man/man1/dlv-log.1.gz
/usr/share/man/man1/dlv-redirect.1.gz
/usr/share/man/man1/dlv-replay.1.gz
/usr/share/man/man1/dlv-run.1.gz
/usr/share/man/man1/dlv-test.1.gz
/usr/share/man/man1/dlv-trace.1.gz
/usr/share/man/man1/dlv-version.1.gz
Исполнимый файл, интересующий нас отладчик - dlv:

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples.work/debug$ which dlv
/usr/bin/dlv

Имеет хорошую систему подсказок:

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples.work/debug$ dlv --help
Delve is a source level debugger for Go programs.

Delve enables you to interact with your program by controlling the execution of the process,
evaluating variables, and providing information of thread / goroutine state, CPU register state and more.

The goal of this tool is to provide a simple yet powerful interface for debugging Go programs.

Pass flags to the program you are debugging using `--`, for example:

`dlv exec ./hello -- server --config conf/config.toml`

Usage:
  dlv [command]

Available Commands:
  attach      Attach to running process and begin debugging.
  completion  Generate the autocompletion script for the specified shell
  connect     Connect to a headless debug server with a terminal client.
  core        Examine a core dump.
  dap         Starts a headless TCP server communicating via Debug Adaptor Protocol (DAP).
  debug       Compile and begin debugging main package in current directory, or the package specified.
  exec        Execute a precompiled binary, and begin a debug session.
  help        Help about any command
  run         Deprecated command. Use 'debug' instead.
  test        Compile test binary and begin debugging program.
  trace       Compile and begin tracing program.
  version     Prints version.

Flags:
      --accept-multiclient               Allows a headless server to accept multiple client connections via JSON-RPC or DAP.
      --allow-non-terminal-interactive   Allows interactive sessions of Delve that don't have a terminal as stdin, stdout and stderr
      --api-version int                  Selects JSON-RPC API version when headless. New clients should use v2. Can be reset via RPCServer.SetApiVersion. See Documentation/api/json-rpc/README.md. (default 1)
      --backend string                   Backend selection (see 'dlv help backend'). (default "default")
      --build-flags string               Build flags, to be passed to the compiler. For example: --build-flags="-tags=integration -mod=vendor -cover -v"
      --check-go-version                 Exits if the version of Go in use is not compatible (too old or too new) with the version of Delve. (default true)
      --disable-aslr                     Disables address space randomization
      --headless                         Run debug server only, in headless mode. Server will accept both JSON-RPC or DAP client connections.
  -h, --help                             help for dlv
      --init string                      Init file, executed by the terminal client.
  -l, --listen string                    Debugging server listen address. (default "127.0.0.1:0")
      --log                              Enable debugging server logging.
      --log-dest string                  Writes logs to the specified file or file descriptor (see 'dlv help log').
      --log-output string                Comma separated list of components that should produce debug output (see 'dlv help log')
      --only-same-user                   Only connections from the same user that started this instance of Delve are allowed to connect. (default true)
  -r, --redirect stringArray             Specifies redirect rules for target process (see 'dlv help redirect')
      --wd string                        Working directory for running the program.

Additional help topics:
  dlv backend    Help about the --backend flag.
  dlv log        Help about logging flags.
  dlv redirect   Help about file redirection.

Use "dlv [command] --help" for more information about a command.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: интерактивный отладчик

Непрочитанное сообщение Olej » 15 мар 2023, 18:36

Olej писал(а):
15 мар 2023, 18:29
Имеет хорошую систему подсказок:
Работа с интерактивным отладчиком Go хорого описана (стр. 357-361) в книге:
Изображение
(Перевод на русский, 2020г. см. Go - здесь можно свободно скачать книгу.)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: интерактивный отладчик

Непрочитанное сообщение Olej » 15 мар 2023, 18:39

Olej писал(а):
15 мар 2023, 18:36
Работа с интерактивным отладчиком Go хорого описана
Работа с интерактивным отладчиком Go в общих чертах похожа на работу с отладчиком GDB.
Возможно, я на досуге добавлю сюда в тему протокол отладки какой-то небольшой программы с помощью Delve.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей