8

I have latest IntelliJ Ultimate EAP and latest Gogland and the problem occurs on both under MacOS Sierra.

I'm trying to debug a go application by creating a debug profile for Go Application and the Run Kind is configured to Package, which contains the package name of the current project.

under Go tool arguments I have -ldflags="-linkmode internal" configured.

When I start a debug session while having some breakpoints, it would run but not stop at these breakpoints.

what am I missing?

thanks

update

ok I was able to reproduce the issue with the following project:

test1.go contains:

package main

const Numb uint64 = 5

test2.go contains:

package main

import "fmt"

func main() {
    fmt.Println(Numb);
}

I Created a Go Application run/debug configuration with the following parameters:

Run kind: package
Package: github.com/kfirufk/test
Working Directory: /usr/local/Cellar/go/1.8.1/src/github.com/kfirufk/test/

when I choose a breakpoint on test2.go line 6 (the first and only line of code in the main function) and I start a debug session, I see the following output:

"/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

I get the program's output properly but Intellij did not stop in the required breakpoint.

the problem is reproduced on Intellij 2017.1.3 with Go Lang Plugin 0.171.1928 on MacOS Sierra 10.12.4.

update

trying to play with intellij's delve to try to understand better what's going on:

/Users/ufk/Library/Application\ Support/IntelliJIdea2017.1/intellij-go/lib/dlv/mac/dlv exec ./test

then I executed:

(dlv) step

and received:

Command failed: could not find FDE for PC 0x78bc000

did I fail to understand how to use delve or is something doesn't work properly here ?

update

yeap.. with continue the debugger works properly with both versions of delve (installed from homebrew and the intellij's version). but still intellij works the same, doesn't stop at breakpoints. i create a breakpoint at test2.go at the line when I print the variable.

any ideas ?

Community
  • 1
  • 1
ufk
  • 30,912
  • 70
  • 235
  • 386
  • Disable the ldflags from the run configuration and try again please. – dlsniper May 18 '17 at 13:29
  • @dlsniper - the results are the same – ufk May 18 '17 at 14:25
  • 1
    What version of the IDE/ Go plugin do you have? Can you please provide more details about the app you are trying to debug? Does it have any CGO? Are you using symlinks? Is the app open source to be able to replicate this? Thanks – dlsniper May 18 '17 at 18:29
  • @dlsniper - thanks for your response. updated main post, I don't use symlinks and the basic reproduction I posted in the updated post, it probably doesn't use any CGO. – ufk May 18 '17 at 21:58
  • Try `delve` from the command line as it is what they use under the hood for debugging. – eduncan911 May 18 '17 at 23:41
  • @eduncan911 - thanks. updated main post – ufk May 19 '17 at 05:48
  • dont use anything intellij. install delve from source, or your package manager, and try it independently of IntelloJ. IOW, eliminate Delve from being the issue, as i dont know a sole who uses IntelliJ for debugging Go. https://github.com/derekparker/delve also make sure your 'go env' is setup property per Golang specs (your gopath, src, etc setup normally - dont deviate from the instructions and develop from within your Gopath.) – eduncan911 May 19 '17 at 13:00
  • @eduncan911 - hi. it appears that I didn't know how to use delve properly. both brew and intellij's version produce the same results. if I set a break point and continue delve stops at the requested breakpoint. – ufk May 19 '17 at 21:35
  • 1
    @eduncan911 there are plenty that use IntelliJ for debugging (or Go for that matter). ufk where are you setting the breakpoint and it doesn't work? I cannot recreate the issue from the IDE using the same setup you mentioned. However you need to run "continue" not "step" if you intend to use delve from command line. – dlsniper May 21 '17 at 09:53
  • @eduncan911 - thank you for your answer. updated main post again. – ufk May 22 '17 at 12:31
  • @eduncan911 - ok.. now it works, the only thing I did was to delete the vendor directory with all the relevant go packages with glide, and instead I installed it with 'go get ./...'. thank you for helping me getting closer to resolving the issue. ahhh... write the answer with the process of what we've done here so you'll get the bounty – ufk May 23 '17 at 18:08
  • Please change the debugging backend to native via Preferences | Building, Debugging & Deployment | Debugger | Delve and check the use native checkbox? – dlsniper May 24 '17 at 17:27
  • @ufk any update? – dlsniper May 25 '17 at 22:27
  • 1
    I had this problem, really nasty, with gogland #GO-171.4424.55 (May 12, 2017). Go plugin 171.4424.55.1932 Based on the suggestion here I upgraded delve with brew and selected "Use native" and now I have debugging again. Thanks! – rfay May 25 '17 at 23:32
  • @dlsniper - after enabling the native checkbox unfortunately the results are the same, it wont stop at breakpoints. it used to work after I delete some directory... but it stopped working.. weird.. don't understand what's going on – ufk May 26 '17 at 05:10
  • Ok, the fact that it doesn't work anymore with the native backend is expected. You can roll it back. What do you mean you've deleted a directory and it worked? Which one? – dlsniper May 26 '17 at 05:28
  • @dlsniper - I had go packages installed locally using glide package manager, once I removed them, I was able to the debug. I don't really think it's related to the directory deletion.. maybe it was just a coincidence. now with the native extension enabled or disabled it doesn't stop at breakpoints – ufk May 26 '17 at 05:30
  • @ufk you might also want to try the nightly plugin version, see here https://blog.jetbrains.com/go/2017/05/12/gogland-eap-8-is-available/ on how to do that. Gogland comes with its own delve and it doesn't use any other version unless instructed to do so. – dlsniper May 26 '17 at 05:31
  • 1
    @ufk there shouldn't be any correlation between the directories via glide and debugging. If you still have the problem even using the nightly, please open up an issue on Youtrack https://youtrack.jetbrains.com/issues/Go and attach the logs, you can find them via Help | Show logs in... Also, before adding the logs, go to Help | Debug Log Settings and add the following line: #com.goide.dlv.DlvVm – dlsniper May 26 '17 at 05:47

6 Answers6

5

Ok.. I finally got it. I got mixed up with the GOROOT structure and GOPATH structure and I placed my project in GOROOT instead of GOPATH.

this is what I did to resolve the issue

I completely deleted go with brew uninstall --force go, then reinstalled go with the following environment variables:

export GOPATH=$HOME/golang
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

then I placed my project at ~/golang/src/github.com/kfirufk/windy-server

and I was finally able to properly debug go applications.

thank you all for assisting me! :)

ufk
  • 30,912
  • 70
  • 235
  • 386
2

Same issue here.

GoLand 2022.3.2 Build #GO-223.8617.58, built on January 27, 2023

Downgrade Go to 1.19.7 version to fix.

Tecnocat
  • 1,162
  • 1
  • 11
  • 14
1

For my case (VSCode on Ubuntu 20.04), if the project is inside a symbolic link directory (or sub-dir of a symbolic dir), vscode will shows "unverified" breakpoints and

"Error on CreateBreakpoint: could not find file ..."

which leads to not stop on breakpoints.

cd \`readlink -f <project dir>\` && code . 

will be ok.

Unheilig
  • 16,196
  • 193
  • 68
  • 98
David Mortals
  • 81
  • 1
  • 1
0

For me, issue resolved adding:

export GOROOT="/usr/local/go"

to $HOME/.profile.

EDIT: I'm using LiteIde X35.2, with Delve Debugger Version: 1.1.0 Build: $Id: 1990ba12450cab9425a2ae62e6ab988725023d5c $

under:

DISTRIB=LinuxMint VERSION=18.3 CODENAME=sylvia

RELEASE=#41~16.04.1-Ubuntu SMP Wed Oct 10 20:16:04 UTC 2018 UBUNTU_CODENAME=xenial KERNEL=4.15.0-38-generic HDWPLATFORM=x86_64

DESKTOP_SESSION=XFCE WINDOWS_MANAGER=XFWM4 DESKTOP_COMPONENTS=kdevtmpfs gnome-keyring-d xfce4-session xfce4-panel xfce4-volumed polkit-gnome-au xfce4-power-man xfce4-terminal gnome-pty-helpe

GTK=libgtk-3-0:amd64 3.18.9-1ubuntu3.3 GStreamer=gst-launch-1.0 version 1.8.3 GStreamer 1.8.3 https://launchpad.net/distros/ubuntu/+source/gstreamer1.0

Stephen Rauch
  • 47,830
  • 31
  • 106
  • 135
cittaul
  • 1
  • 1
0

In my case, the process was already running at that port and didn't close. So I had to manually stop the process and run again from IntelliJ.

Vishal
  • 435
  • 6
  • 12
0

In my case (GoLand), the problem was with the flag -trimpath not being set in my debug configurations:

  1. "Run", "Debug...", "Edit Configurations."
  2. In the templates item, go to "Go Test" option and add the argument -trimpath in "Go tool arguments"

You can also set in your environment with:

go env -w GOFLAGS="-trimpath"

That also works for the "attach to process" debugging option.

You can see GoLand IDE Logs in the menu "Help", "Show Log Files". It will make your life easier.

Reference: https://youtrack.jetbrains.com/issue/GO-8277

Ricardo Zanini
  • 1,041
  • 7
  • 12