debugging go application doesn't stop at breakpoints

Viewed 7215

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 ?

5 Answers

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.

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

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.

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

Related