Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

debug: "program":"${file}" foo.go turns into extension-output-golang.go-nightly-#3 in launch request #1826

Closed
polinasok opened this issue Oct 5, 2021 · 3 comments
Assignees
Labels
Debug Issues related to the debugging functionality of the extension. FrozenDueToAge
Milestone

Comments

@polinasok
Copy link
Contributor

What version of Go, VS Code & VS Code Go extension are you using?

Version Information
  • Run go version to get version of Go from the VS Code integrated terminal.
$ go version
go version go1.17.1 darwin/amd64`
  • Run gopls -v version to get version of Gopls from the VS Code integrated terminal.
$ /Users/polina/go/bin/gopls -v version
Build info
----------
golang.org/x/tools/gopls v0.7.2
    golang.org/x/tools/gopls@v0.7.2 h1:kRKKdvA8GOzra8rhSFDClOR7hV/x8v0J0Vm4C/gWq8s=
    github.com/BurntSushi/toml@v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
    github.com/google/go-cmp@v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
    github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
    golang.org/x/mod@v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
    golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
    golang.org/x/sys@v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
    golang.org/x/tools@v0.1.6-0.20210908190839-cf92b39a962c h1:C0nyHiBU2m0cR6hDiUORWqQIt3h37wsp1255QBSSXqY=
    golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
    honnef.co/go/tools@v0.2.0 h1:ws8AfbgTX3oIczLPNPCu5166oBg9ST2vNs0rcht+mDE=
    mvdan.cc/gofumpt@v0.1.1 h1:bi/1aS/5W00E2ny5q65w9SnKpWEF/UIOqDYBILpo9rA=
    mvdan.cc/xurls/v2@v2.3.0 h1:59Olnbt67UKpxF1EwVBopJvkSUBmgtb468E4GVWIZ1I=
  • Run code -v or code-insiders -v to get version of VS Code or VS Code Insiders.
$ code -v
1.60.2
7f6ab5485bbc008386c4386d08766667e155244e
x64
  • Check your installed extensions to get the version of the VS Code Go extension
v2021.9.2923
  • Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) > Go: Locate Configured Go Tools command.
	go:	/usr/local/go/bin/go: go version go1.17.1 darwin/amd64

	gopkgs:	/Users/polina/go/bin/gopkgs: go1.16.7
		path	github.com/uudashr/gopkgs/v2/cmd/gopkgs
		mod	github.com/uudashr/gopkgs/v2	v2.1.2	h1:A0+QH6wqNRHORJnxmqfeuBEsK4nYQ7pgcOHhqpqcrpo=
		dep	github.com/karrick/godirwalk	v1.12.0	h1:nkS4xxsjiZMvVlazd0mFyiwD4BR9f3m6LXGhM2TUx3Y=
		dep	github.com/pkg/errors	v0.8.1	h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
	
	go-outline:	/Users/polina/go/bin/go-outline: go1.16.7
		path	github.com/ramya-rao-a/go-outline
		mod	github.com/ramya-rao-a/go-outline	v0.0.0-20210608161538-9736a4bde949	h1:iaD+iVf9xGfajsJp+zYrg9Lrk6gMJ6/hZHO4cYq5D5o=
		dep	golang.org/x/tools	v0.1.1	h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs=
	
	gotests:	/Users/polina/go/bin/gotests: go1.16.7
		path	github.com/cweill/gotests/gotests
		mod	github.com/cweill/gotests	v1.6.0	h1:KJx+/p4EweijYzqPb4Y/8umDCip1Cv6hEVyOx0mE9W8=
		dep	golang.org/x/tools	v0.0.0-20191109212701-97ad0ed33101	h1:LCmXVkvpQCDj724eX6irUTPCJP5GelFHxqGSWL2D1R0=
	
	gomodifytags:	/Users/polina/go/bin/gomodifytags: go1.16.7
		path	github.com/fatih/gomodifytags
		mod	github.com/fatih/gomodifytags	v1.13.0	h1:fmhwoecjZ5c34Q2chjRB9cL8Rgag+1TOSMy+grissMc=
		dep	github.com/fatih/camelcase	v1.0.0	h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
		dep	github.com/fatih/structtag	v1.2.0	h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
		dep	golang.org/x/tools	v0.0.0-20180824175216-6c1c5e93cdc1	h1:EAPsk8kfGCjxQagrkWjzXlUWe2p3gj5MknO+z2o9GKc=
	
	impl:	/Users/polina/go/bin/impl: go1.16.7
		path	github.com/josharian/impl
		mod	github.com/josharian/impl	v1.1.0	h1:gafhg1OFVMq46ifdkBa8wp4hlGogjktjjA5h/2j4+2k=
		dep	golang.org/x/mod	v0.2.0	h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
		dep	golang.org/x/tools	v0.0.0-20200522201501-cb1345f3a375	h1:SjQ2+AKWgZLc1xej6WSzL+Dfs5Uyd5xcZH1mGC411IA=
		dep	golang.org/x/xerrors	v0.0.0-20191204190536-9bdfabe68543	h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
	
	goplay:	/Users/polina/go/bin/goplay: go1.16.7
		path	github.com/haya14busa/goplay/cmd/goplay
		mod	github.com/haya14busa/goplay	v1.0.0	h1:ED4BMrGQ3WH7H3YXrcnWMVzj1xeSepaYTkLh1DtFi/4=
		dep	github.com/skratchdot/open-golang	v0.0.0-20200116055534-eef842397966	h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
	
	dlv:	/Users/polina/go/bin/dlv: go1.16.7
		path	github.com/go-delve/delve/cmd/dlv
		mod	github.com/go-delve/delve	v1.7.1	h1:RJWK3sLJ/zY25ng6Q9oNsyo5Rmr2PAEWuyFoD1axlbg=
		dep	github.com/cosiner/argv	v0.1.0	h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg=
		dep	github.com/cpuguy83/go-md2man/v2	v2.0.0	h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
		dep	github.com/derekparker/trie	v0.0.0-20200317170641-1fdf38b7b0e9	h1:G765iDCq7bP5opdrPkXk+4V3yfkgV9iGFuheWZ/X/zY=
		dep	github.com/google/go-dap	v0.5.0	h1:RMHAVn5xeunBakYk65ggHXttk6qjZVdbmi+xhAoL2wY=
		dep	github.com/hashicorp/golang-lru	v0.5.4	h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
		dep	github.com/mattn/go-isatty	v0.0.3	h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
		dep	github.com/peterh/liner	v0.0.0-20170317030525-88609521dc4b	h1:8uaXtUkxiy+T/zdLWuxa/PG4so0TPZDZfafFNNSaptE=
		dep	github.com/russross/blackfriday/v2	v2.0.1	h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
		dep	github.com/shurcooL/sanitized_anchor_name	v1.0.0	h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
		dep	github.com/sirupsen/logrus	v1.6.0	h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
		dep	github.com/spf13/cobra	v1.1.3	h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
		dep	github.com/spf13/pflag	v1.0.5	h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
		dep	go.starlark.net	v0.0.0-20200821142938-949cc6f4b097	h1:YiRMXXgG+Pg26t1fjq+iAjaauKWMC9cmGFrtOEuwDDg=
		dep	golang.org/x/arch	v0.0.0-20190927153633-4e8777c89be4	h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI=
		dep	golang.org/x/sys	v0.0.0-20210514084401-e8d321eab015	h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
		dep	gopkg.in/yaml.v2	v2.4.0	h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
	
	dlv-dap:	/Users/polina/go/bin/dlv-dap: go1.17.1
		path	github.com/go-delve/delve/cmd/dlv
		mod	github.com/go-delve/delve	v1.7.3-0.20210925154100-efc44831754e	h1:jvnpDpMk/EWbbXZcgSZsfqc5JF1OJHb5k2SjUfa9HqM=
		dep	github.com/cosiner/argv	v0.1.0	h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg=
		dep	github.com/cpuguy83/go-md2man/v2	v2.0.0	h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
		dep	github.com/derekparker/trie	v0.0.0-20200317170641-1fdf38b7b0e9	h1:G765iDCq7bP5opdrPkXk+4V3yfkgV9iGFuheWZ/X/zY=
		dep	github.com/google/go-dap	v0.6.0	h1:Y1RHGUtv3R8y6sXq2dtGRMYrFB2hSqyFVws7jucrzX4=
		dep	github.com/hashicorp/golang-lru	v0.5.4	h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
		dep	github.com/mattn/go-isatty	v0.0.3	h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
		dep	github.com/mattn/go-runewidth	v0.0.3	h1:a+kO+98RDGEfo6asOGMmpodZq4FNtnGP54yps8BzLR4=
		dep	github.com/peterh/liner	v1.2.1	h1:O4BlKaq/LWu6VRWmol4ByWfzx6MfXc5Op5HETyIy5yg=
		dep	github.com/russross/blackfriday/v2	v2.0.1	h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
		dep	github.com/shurcooL/sanitized_anchor_name	v1.0.0	h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
		dep	github.com/sirupsen/logrus	v1.6.0	h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
		dep	github.com/spf13/cobra	v1.1.3	h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
		dep	github.com/spf13/pflag	v1.0.5	h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
		dep	go.starlark.net	v0.0.0-20200821142938-949cc6f4b097	h1:YiRMXXgG+Pg26t1fjq+iAjaauKWMC9cmGFrtOEuwDDg=
		dep	golang.org/x/arch	v0.0.0-20190927153633-4e8777c89be4	h1:QlVATYS7JBoZMVaf+cNjb90WD/beKVHnIxFKT4QaHVI=
		dep	golang.org/x/sys	v0.0.0-20210514084401-e8d321eab015	h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
		dep	gopkg.in/yaml.v2	v2.4.0	h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
	
	staticcheck:	/Users/polina/go/bin/staticcheck: go1.16.7
		path	honnef.co/go/tools/cmd/staticcheck
		mod	honnef.co/go/tools	v0.2.1	h1:/EPr//+UMMXwMTkXvCCoaJDq8cpjMO80Ou+L4PDo2mY=
		dep	github.com/BurntSushi/toml	v0.3.1	h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
		dep	golang.org/x/mod	v0.3.0	h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
		dep	golang.org/x/sys	v0.0.0-20210119212857-b64e53b001e4	h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
		dep	golang.org/x/tools	v0.1.0	h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
		dep	golang.org/x/xerrors	v0.0.0-20200804184101-5ec99f83aff1	h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
	
	gopls:	/Users/polina/go/bin/gopls: go1.16.7
		path	golang.org/x/tools/gopls
		mod	golang.org/x/tools/gopls	v0.7.2	h1:kRKKdvA8GOzra8rhSFDClOR7hV/x8v0J0Vm4C/gWq8s=
		dep	github.com/BurntSushi/toml	v0.4.1	h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
		dep	github.com/google/go-cmp	v0.5.6	h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
		dep	github.com/sergi/go-diff	v1.1.0	h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
		dep	golang.org/x/mod	v0.4.2	h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
		dep	golang.org/x/sync	v0.0.0-20210220032951-036812b2e83c	h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
		dep	golang.org/x/sys	v0.0.0-20210809222454-d867a43fc93e	h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
		dep	golang.org/x/tools	v0.1.6-0.20210908190839-cf92b39a962c	h1:C0nyHiBU2m0cR6hDiUORWqQIt3h37wsp1255QBSSXqY=
		dep	golang.org/x/xerrors	v0.0.0-20200804184101-5ec99f83aff1	h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
		dep	honnef.co/go/tools	v0.2.0	h1:ws8AfbgTX3oIczLPNPCu5166oBg9ST2vNs0rcht+mDE=
		dep	mvdan.cc/gofumpt	v0.1.1	h1:bi/1aS/5W00E2ny5q65w9SnKpWEF/UIOqDYBILpo9rA=
		dep	mvdan.cc/xurls/v2	v2.3.0	h1:59Olnbt67UKpxF1EwVBopJvkSUBmgtb468E4GVWIZ1I=
	

go env
Workspace Folder (foo): /Users/polina/go/src/foo
	GO111MODULE=""
	GOARCH="amd64"
	GOBIN=""
	GOCACHE="/Users/polina/Library/Caches/go-build"
	GOENV="/Users/polina/Library/Application Support/go/env"
	GOEXE=""
	GOEXPERIMENT=""
	GOFLAGS=""
	GOHOSTARCH="amd64"
	GOHOSTOS="darwin"
	GOINSECURE=""
	GOMODCACHE="/Users/polina/go/pkg/mod"
	GONOPROXY=""
	GONOSUMDB=""
	GOOS="darwin"
	GOPATH="/Users/polina/go"
	GOPRIVATE=""
	GOPROXY="https://proxy.golang.org,direct"
	GOROOT="/usr/local/go"
	GOSUMDB="sum.golang.org"
	GOTMPDIR=""
	GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
	GOVCS=""
	GOVERSION="go1.17.1"
	GCCGO="gccgo"
	AR="ar"
	CC="clang"
	CXX="clang++"
	CGO_ENABLED="1"
	GOMOD="/dev/null"
	CGO_CFLAGS="-g -O2"
	CGO_CPPFLAGS=""
	CGO_CXXFLAGS="-g -O2"
	CGO_FFLAGS="-g -O2"
	CGO_LDFLAGS="-g -O2"
	PKG_CONFIG="pkg-config"
	GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/dn/8hszkj9x21n__1gr_p8qgjgr0007jz/T/go-build913372682=/tmp/go-build -gno-record-gcc-switches -fno-common"

Share the Go related settings you have added/edited

Run Preferences: Open Settings (JSON) command to open your settings.json file.
Share all the settings with the go. or ["go"] or gopls prefixes.

    "go.delveConfig": {
        "dlvLoadConfig": {
            "followPointers": true,
            "maxVariableRecurse": 1,
            "maxStringLen": 400,
            "maxArrayValues": 400,
            "maxStructFields": -1
        },
        "apiVersion": 2,
        "showGlobalVariables": false
    },

Describe the bug

This comes and goes. I haven't figured out why. But every once in a while when I try to build my test .go file while it is in my active view, I get a build error indicating that some other file with what looks like an auto-generated (tmp?) name extension-output-golang.go-nightly-#3 is being used instead:

Build Error: go build -o /Users/polina/delve/__debug_bin -gcflags all=-N -l /Users/polina/go/src/foo/extension-output-golang.go-nightly-#3
stat /Users/polina/go/src/foo/extension-output-golang.go-nightly-#3: directory not found (exit status 1)

I thought maybe this was related to saving the file after making changes, but I haven't made any recent changes to the file this time.

Steps to reproduce the behavior

This is the most recent set-up where I observed this, but I am pretty sure last time I saw this I was not using debugServer and instead had the extension launch dlv-dap for me. That said, upon making a cosmetic edit to launch.json, the issue went away. I don't know of a reliable way to reproduce this.

File foo.go

package main

import (
	"fmt"
)

func main() {
	i := 10
	fmt.Println("!!!!!!!!!!!hello world!!!!!!!!!!!!!", i)
}
{
            "name": "Launch file",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program":"${file}",
            "trace": "trace",
            "debugServer":54321,
            "logOutput": "rpc,debugger,dap",
}
$ ./dlv dap --listen=:54321 --log --log-output=dap,debugger
DAP server listening at: [::]:54321
2021-10-04T17:43:46-07:00 warning layer=rpc Listening for remote connections (connections are not authenticated nor encrypted)
2021-10-04T17:43:46-07:00 debug layer=dap DAP server pid = 49444
2021-10-04T17:43:49-07:00 debug layer=dap DAP connection started
2021-10-04T17:43:49-07:00 debug layer=dap [<- from client]{"seq":1,"type":"request","command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code","adapterID":"go","locale":"en-us","linesStartAt1":true,"columnsStartAt1":true,"pathFormat":"path","supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"supportsMemoryReferences":true,"supportsProgressReporting":true,"supportsInvalidatedEvent":true}}
2021-10-04T17:43:49-07:00 debug layer=dap [-> to client]{"seq":0,"type":"response","request_seq":1,"success":true,"command":"initialize","body":{"supportsConfigurationDoneRequest":true,"supportsFunctionBreakpoints":true,"supportsConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"supportsSetVariable":true,"supportsExceptionInfoRequest":true,"supportTerminateDebuggee":true,"supportSuspendDebuggee":true,"supportsDelayedStackTraceLoading":true,"supportsLogPoints":true,"supportsClipboardContext":true}}
2021-10-04T17:43:49-07:00 debug layer=dap [<- from client]{"seq":2,"type":"request","command":"launch","arguments":{"name":"Launch file","type":"go","request":"launch","mode":"debug","program":"/Users/polina/go/src/foo/extension-output-golang.go-nightly-#3","trace":"trace","debugServer":54321,"logOutput":"rpc,debugger,dap","__configurationTarget":5,"packagePathToGoModPathMap":{"/Users/polina/go/src/foo":"","/Users/polina/delve/_fixtures":"/Users/polina/delve"},"debugAdapter":"dlv-dap","apiVersion":2,"showGlobalVariables":false,"dlvToolPath":"/Users/polina/go/bin/dlv-dap","env":{},"__sessionId":"880bf140-6cda-4671-9deb-09290638beae"}}
2021-10-04T17:43:49-07:00 debug layer=dap debug backend is 'default'
2021-10-04T17:43:49-07:00 debug layer=dap building program '/Users/polina/go/src/foo/extension-output-golang.go-nightly-#3' in '/Users/polina/delve' with flags ''
2021-10-04T17:43:50-07:00 debug layer=dap [-> to client]{"seq":0,"type":"event","event":"output","body":{"category":"stderr","output":"Build Error: go build -o /Users/polina/delve/__debug_bin -gcflags all=-N -l /Users/polina/go/src/foo/extension-output-golang.go-nightly-#3\nstat /Users/polina/go/src/foo/extension-output-golang.go-nightly-#3: directory not found (exit status 1)\n","source":{}}}
2021-10-04T17:43:50-07:00 debug layer=dap Failed to launch: Build error: Check the debug console for details.
2021-10-04T17:43:50-07:00 debug layer=dap [-> to client]{"seq":0,"type":"response","request_seq":2,"success":false,"command":"launch","message":"Failed to launch","body":{"error":{"id":3000,"format":"Failed to launch: Build error: Check the debug console for details.","showUser":false}}}
2021-10-04T17:43:50-07:00 debug layer=dap [<- from client]{"seq":3,"type":"request","command":"disconnect","arguments":{}}
2021-10-04T17:43:50-07:00 debug layer=dap [-> to client]{"seq":0,"type":"response","request_seq":3,"success":true,"command":"disconnect"}
2021-10-04T17:43:50-07:00 debug layer=dap [-> to client]{"seq":0,"type":"event","event":"terminated","body":{}}
2021-10-04T17:43:50-07:00 debug layer=dap DAP server stopping...
2021-10-04T17:43:50-07:00 debug layer=dap DAP error: read tcp 127.0.0.1:54321->127.0.0.1:61872: use of closed network connection
2021-10-04T17:43:50-07:00 debug layer=dap DAP server stopped
[Trace - 17:43:49.832] client -> {"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code","adapterID":"go","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en-us","supportsProgressReporting":true,"supportsInvalidatedEvent":true,"supportsMemoryReferences":true},"type":"request","seq":1}

[Trace - 17:43:49.845] client  <- {"seq":0,"type":"response","request_seq":1,"success":true,"command":"initialize","body":{"supportsConfigurationDoneRequest":true,"supportsFunctionBreakpoints":true,"supportsConditionalBreakpoints":true,"supportsEvaluateForHovers":true,"supportsSetVariable":true,"supportsExceptionInfoRequest":true,"supportTerminateDebuggee":true,"supportSuspendDebuggee":true,"supportsDelayedStackTraceLoading":true,"supportsLogPoints":true,"supportsClipboardContext":true}}

[Trace - 17:43:49.855] client -> {"command":"launch","arguments":{"name":"Launch file","type":"go","request":"launch","mode":"debug","program":"/Users/polina/go/src/foo/extension-output-golang.go-nightly-#3","trace":"trace","debugServer":54321,"logOutput":"rpc,debugger,dap","__configurationTarget":5,"packagePathToGoModPathMap":{"/Users/polina/go/src/foo":"","/Users/polina/delve/_fixtures":"/Users/polina/delve"},"debugAdapter":"dlv-dap","apiVersion":2,"showGlobalVariables":false,"dlvToolPath":"/Users/polina/go/bin/dlv-dap","env":{},"__sessionId":"880bf140-6cda-4671-9deb-09290638beae"},"type":"request","seq":2}

[Trace - 17:43:50.32] client  <- {"seq":0,"type":"event","event":"output","body":{"category":"stderr","output":"Build Error: go build -o /Users/polina/delve/__debug_bin -gcflags all=-N -l /Users/polina/go/src/foo/extension-output-golang.go-nightly-#3\nstat /Users/polina/go/src/foo/extension-output-golang.go-nightly-#3: directory not found (exit status 1)\n","source":{}}}

[Trace - 17:43:50.36] client  <- {"seq":0,"type":"response","request_seq":2,"success":false,"command":"launch","message":"Failed to launch","body":{"error":{"id":3000,"format":"Failed to launch: Build error: Check the debug console for details.","showUser":false}}}

[Trace - 17:43:50.94] client -> {"command":"disconnect","arguments":{"restart":false},"type":"request","seq":3}

[Trace - 17:43:50.96] client  <- {"seq":0,"type":"response","request_seq":3,"success":true,"command":"disconnect"}

[Trace - 17:43:50.96] client  <- {"seq":0,"type":"event","event":"terminated","body":{}}

[Error - 17:43:50.97] error: Error: connection closed
@gopherbot gopherbot added this to the Untriaged milestone Oct 5, 2021
@hyangah hyangah modified the milestones: Untriaged, On Deck Oct 5, 2021
@gopherbot
Copy link
Collaborator

Change https://golang.org/cl/353990 mentions this issue: src/goDebugConfiguration: handle directory with '.' in its name

@hyangah hyangah added the Debug Issues related to the debugging functionality of the extension. label Oct 5, 2021
@hyangah
Copy link
Contributor

hyangah commented Oct 5, 2021

That is because the focus was on OUTPUT channel which VS Code treats like an open document and $file is resolved to the VS Code internal representation of the OUTPUT channel. I hoped this kind of configuration error could be caught by delve dap while building the target, but now the build error is by default printed only in DEBUG CONSOLE so it doesn't seem obvious as I hoped. The linked CL changes not to start a debug session but showing the popup.

The current way of showing notification is not ideal either because users would suppress it forever. In that case, there is no place to show the error details. DEBUG CONSOLE will be the natural place to look into but unfortunately, debug session didn't start yet when this check occurs so there is DEBUG CONSOLE.

Alternative is to let the extension forward this request and dlv dap as before but implement this check inside dlv dap side and let it provide user-friendly error message about this configuration error (by then, DEBUG CONSOLE is available).

@hyangah hyangah self-assigned this Oct 8, 2021
@hyangah hyangah modified the milestones: On Deck, v0.29.0 Oct 8, 2021
gopherbot pushed a commit that referenced this issue Oct 11, 2021
parseProgramSync assumed 'program' is a directory if it does not
contain '.'. That was a hack to avoid lstatSync and implement/test
parseProgramSync without requiring the program to be a valid,
existing file or directory. However, this does not work for users
whose folder name contains '.'. (e.g., #1826)
Readd the lstat check to examine whether the program is a directory.
This required to change tests to create dummy files and folders.

While we are here, rework parseProgramSync.
 - move parseProgramSync to goDebugConfiguration, the only call
   site of this function.
 - rename it to parseDebugProgramArgSync and call it only for
   debug/test/auto launch requests.
 - call parseDebugProgramArgSync for externally launched debug
   adapter settings too because it does `program` validation.
   But in that case, we won't mess with `program` or `__buildDir`.
 - previously we accepted cases for which parseDebugProgramArgSync
   throws an error (including files other than .go) because the
   hack is not perfect and delve dap and go build may know better
   on how to handle that. But now build errors can be hidden in DEBUG
   CONSOLE so they fail to catch users' attention
   (e.g., #1826)
   So, let's stop and don't proceed if parseDebugProgramArgSync fails.

Updates #1769
Updates #1826

Change-Id: If413a0ca0c5814bcaa45ea69ceff8bcfde558370
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/353990
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
Trust: Suzy Mueller <suzmue@golang.org>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
@hyangah
Copy link
Contributor

hyangah commented Oct 27, 2021

v0.29.0 is released.
That should stop if file other than .go is used as a program.

@hyangah hyangah closed this as completed Oct 27, 2021
@golang golang locked and limited conversation to collaborators Oct 27, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Debug Issues related to the debugging functionality of the extension. FrozenDueToAge
Projects
None yet
Development

No branches or pull requests

3 participants