Fix 'run without debugging' when using modules or no user debug configuration (#3125)
* debug: fix 'run without debugging'
Bug 1: when generating the default debug configuration
because there is no user-configured one, the extension
dropped noDebug field and caused the program to run with
debugging enabled. Fix it (goDebugConfiguration.ts)
Bug 2: when debug adapter receives noDebug request, it
runs the program with `go run` instead of invoking the
program through dlv. The `go run` will not work in modules
mode if the command runs outside the main module. Set
cwd accordingly.
Fixes microsoft/vscode-go#3121
TESTED=manually with the example attached in #3121
* Handle case when debugConfiguration doesnt exist
Co-authored-by: Ramya Achutha Rao <ramyar@microsoft.com>
diff --git a/src/debugAdapter/goDebug.ts b/src/debugAdapter/goDebug.ts
index a9a309e..98bdbd0 100644
--- a/src/debugAdapter/goDebug.ts
+++ b/src/debugAdapter/goDebug.ts
@@ -435,6 +435,7 @@
runOptions.cwd = program;
runArgs.push('.');
} else {
+ runOptions.cwd = dirname;
runArgs.push(program);
}
if (launchArgs.args) {
diff --git a/src/goDebugConfiguration.ts b/src/goDebugConfiguration.ts
index 367fd28..f9fe07c 100644
--- a/src/goDebugConfiguration.ts
+++ b/src/goDebugConfiguration.ts
@@ -47,13 +47,13 @@
return;
}
- debugConfiguration = {
+ debugConfiguration = Object.assign(debugConfiguration || {}, {
name: 'Launch',
type: 'go',
request: 'launch',
mode: 'auto',
program: activeEditor.document.fileName
- };
+ });
}
debugConfiguration['packagePathToGoModPathMap'] = packagePathToGoModPathMap;