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;