Приложение отладки go не останавливается на точках останова
У меня установлена последняя версия IntelliJ Ultimate EAP и последняя версия Gogland, и проблема возникает в MacOS Sierra.
Я пытаюсь отладить приложение go, создав профиль отладки для Go Application
и Run Kind
настроен на Package
, который содержит имя пакета текущего проекта.
под Go tool arguments
я имею -ldflags="-linkmode internal"
сконфигурировано.
Когда я запускаю сеанс отладки с некоторыми точками останова, он запускается, но не останавливается на этих точках останова.
что мне не хватает?
Спасибо
Обновить
хорошо, я смог воспроизвести проблему со следующим проектом:
test1.go
содержит:
package main
const Numb uint64 = 5
test2.go
содержит:
package main
import "fmt"
func main() {
fmt.Println(Numb);
}
Я создал Go Application
запустить / отладить конфигурацию со следующими параметрами:
Run kind: package
Package: github.com/kfirufk/test
Working Directory: /usr/local/Cellar/go/1.8.1/src/github.com/kfirufk/test/
когда я выбираю точку останова на test2.go
строка 6 (первая и единственная строка кода в основной функции), и я начинаю сеанс отладки, я вижу следующий вывод:
"/Users/ufk/Library/Application Support/IntelliJIdea2017.1/Go/lib/dlv/mac/dlv" --listen=localhost:53111 --headless=true exec /private/var/folders/cn/n7rwdd_95_l54s3zdnbxvw040000gn/T/Unnamedgo --
GOROOT=/usr/local/Cellar/go/1.8.1/libexec
GOPATH=/usr/local/opt/go
/usr/local/Cellar/go/1.8.1/libexec/bin/go build -o /private/var/folders/cn/n7rwdd_95_l54s3zdnbxvw040000gn/T/Unnamedgo -gcflags "-N -l" github.com/kfirufk/test
API server listening at: 127.0.0.1:53111
5
Я получаю вывод программы правильно, но Intellij не остановился в требуемой точке останова.
проблема воспроизводится на Intellij 2017.1.3 с плагином Go Lang 0.171.1928 на MacOS Sierra 10.12.4.
Обновить
пытаясь поиграть с делишкой Интеллиджа, чтобы лучше понять, что происходит:
/Users/ufk/Library/Application\ Support/IntelliJIdea2017.1/intellij-go/lib/dlv/mac/dlv exec ./test
затем я выполнил:
(dlv) step
и получил:
Command failed: could not find FDE for PC 0x78bc000
я не понял, как использовать Delve или что-то здесь не работает должным образом?
Обновить
да.. с continue
отладчик работает корректно с обеими версиями delve (установленными из homebrew и версии intellij). но все равно intellij работает так же, не останавливается на точках останова. я создаю точку останова на test2.go
в строке, когда я печатаю переменную.
есть идеи?
6 ответов
Хорошо.. Я наконец получил это. Я смешался со структурой GOROOT и структурой GOPATH и поместил свой проект в GOROOT вместо GOPATH.
это то, что я сделал, чтобы решить проблему
Я полностью удалил перейти с brew uninstall --force go
, затем переустановите, перейдите со следующими переменными среды:
export GOPATH=$HOME/golang
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
Затем я разместил свой проект на ~/golang/src/github.com/kfirufk/windy-server
и я наконец смог правильно отлаживать приложения go.
спасибо всем за помощь!:)
Та же проблема здесь.
GoLand 2022.3.2, сборка № GO-223.8617.58, построена 27 января 2023 г.
Понизить версию. Для исправления перейдите на версию 1.19.7.
В моем случае (VSCode в Ubuntu 20.04), если проект находится внутри каталога символических ссылок (или подкаталога символического каталога), vscode покажет "непроверенные" точки останова и
"Ошибка CreateBreakpoint: не удалось найти файл..."
что приводит к тому, что нельзя останавливаться на точках останова.
cd \`readlink -f <project dir>\` && code .
будет в порядке.
В моем случае процесс уже выполнялся в этом порту и не закрывался. Поэтому мне пришлось вручную остановить процесс и снова запустить из IntelliJ.
Для меня проблема решена добавлением:
export GOROOT="/usr/local/go"
в $HOME/.profile.
РЕДАКТИРОВАТЬ: я использую LiteIde X35.2, с Delve Debugger Версия: 1.1.0 Сборка: $Id: 1990ba12450cab9425a2ae62e6ab988725023d5c $
под:
DISTRIB = LinuxMint VERSION = 18,3 CODENAME = sylvia
RELEASE = # 41 ~ 16.04.1-Ubuntu SMP Ср 10 октября 20:16:04 UTC 2018 UBUNTU_CODENAME=xenial KERNEL=4.15.0-38-универсальный HDWPLATFORM = x86_64
DESKTOP_SESSION = XFCE WINDOWS_MANAGER = XFWM4 DESKTOP_COMPONENTS = kdevtmpfs gnome-keyring-d xfce4-сеанс xfce4-панель xfce4-объемный polkit-gnome-au xfce4-power-man терминал xfce4-gnome
GTK = libgtk-3-0: amd64 3.18.9-1ubuntu3.3 GStreamer = gst-launch-1.0 версия 1.8.3 GStreamer 1.8.3 https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
В моем случае (GoLand) проблема заключалась в том, что флаг не был установлен в моих конфигурациях отладки:
- «Выполнить», «Отладить...», «Редактировать конфигурации».
- В элементе шаблонов перейдите к опции «Перейти к тесту» и добавьте аргумент
-trimpath
в "Аргументы инструмента Go"
Вы также можете установить в своей среде с помощью:
go env -w GOFLAGS="-trimpath"
Это также работает для опции отладки «присоединиться к процессу».
Посмотреть журналы GoLand IDE можно в меню «Справка», «Показать файлы журналов». Это сделает вашу жизнь проще.