Приложение отладки 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) проблема заключалась в том, что флаг не был установлен в моих конфигурациях отладки:

  1. «Выполнить», «Отладить...», «Редактировать конфигурации».
  2. В элементе шаблонов перейдите к опции «Перейти к тесту» и добавьте аргумент -trimpathв "Аргументы инструмента Go"

Вы также можете установить в своей среде с помощью:

      go env -w GOFLAGS="-trimpath"

Это также работает для опции отладки «присоединиться к процессу».

Посмотреть журналы GoLand IDE можно в меню «Справка», «Показать файлы журналов». Это сделает вашу жизнь проще.

Ссылка: https://youtrack.jetbrains.com/issue/GO-8277

Другие вопросы по тегам