diff --git a/.travis.yml b/.travis.yml index bb61ada..5ac80b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,7 @@ sudo: false - +language: node_js +node_js: + - stable os: - osx - linux diff --git a/package.json b/package.json index e4d3e16..7068b28 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,11 @@ "description": "Path to the gdb executable or the command if in PATH", "default": "gdb" }, + "debugger_args": { + "type": "array", + "description": "Additional arguments to pass to GDB", + "default": [] + }, "printCalls": { "type": "boolean", "description": "Prints all GDB calls to the console", @@ -201,6 +206,11 @@ "description": "Path to the gdb executable or the command if in PATH", "default": "gdb" }, + "debugger_args": { + "type": "array", + "description": "Additional arguments to pass to GDB", + "default": [] + }, "cwd": { "type": "string", "description": "Path of project", @@ -284,6 +294,11 @@ "description": "Path to the lldb-mi executable or the command if in PATH", "default": "lldb-mi" }, + "debugger_args": { + "type": "array", + "description": "Additional arguments to pass to LLDB", + "default": [] + }, "printCalls": { "type": "boolean", "description": "Prints all lldb calls to the console", @@ -389,6 +404,11 @@ "description": "Path to the lldb-mi executable or the command if in PATH", "default": "lldb-mi" }, + "debugger_args": { + "type": "array", + "description": "Additional arguments to pass to LLDB", + "default": [] + }, "cwd": { "type": "string", "description": "Path of project", @@ -450,6 +470,11 @@ "description": "Path to the mago-mi executable or the command if in PATH", "default": "mago-mi" }, + "debugger_args": { + "type": "array", + "description": "Additional arguments to pass to mago", + "default": [] + }, "printCalls": { "type": "boolean", "description": "Prints all mago calls to the console", @@ -495,6 +520,11 @@ "description": "Path to the mago-mi executable or the command if in PATH", "default": "mago-mi" }, + "debugger_args": { + "type": "array", + "description": "Additional arguments to pass to mago", + "default": [] + }, "cwd": { "type": "string", "description": "Path of project", diff --git a/src/backend/mi2/mi2.ts b/src/backend/mi2/mi2.ts index 8785a4f..7840355 100644 --- a/src/backend/mi2/mi2.ts +++ b/src/backend/mi2/mi2.ts @@ -27,7 +27,7 @@ function couldBeOutput(line: string) { const trace = false; export class MI2 extends EventEmitter implements IBackend { - constructor(public application: string, public preargs: string[]) { + constructor(public application: string, public preargs: string[], public extraargs: string[]) { super(); } @@ -36,7 +36,8 @@ export class MI2 extends EventEmitter implements IBackend { target = nativePath.join(cwd, target); return new Promise((resolve, reject) => { this.isSSH = false; - this.process = ChildProcess.spawn(this.application, this.preargs, { cwd: cwd }); + let args = this.preargs.concat(this.extraargs || []); + this.process = ChildProcess.spawn(this.application, args, { cwd: cwd }); this.process.stdout.on("data", this.stdout.bind(this)); this.process.stderr.on("data", this.stderr.bind(this)); this.process.on("exit", (() => { this.emit("quit"); }).bind(this)); diff --git a/src/gdb.ts b/src/gdb.ts index c4005bc..767c549 100644 --- a/src/gdb.ts +++ b/src/gdb.ts @@ -8,6 +8,7 @@ export interface LaunchRequestArguments { cwd: string; target: string; gdbpath: string; + debugger_args: string[]; arguments: string; terminal: string; autorun: string[]; @@ -20,6 +21,7 @@ export interface AttachRequestArguments { cwd: string; target: string; gdbpath: string; + debugger_args: string[]; executable: string; remote: boolean; autorun: string[]; @@ -40,7 +42,7 @@ class GDBDebugSession extends MI2DebugSession { } protected launchRequest(response: DebugProtocol.LaunchResponse, args: LaunchRequestArguments): void { - this.miDebugger = new MI2(args.gdbpath || "gdb", ["-q", "--interpreter=mi2"]); + this.miDebugger = new MI2(args.gdbpath || "gdb", ["-q", "--interpreter=mi2"], args.debugger_args); this.initDebugger(); this.quit = false; this.attached = false; @@ -109,7 +111,7 @@ class GDBDebugSession extends MI2DebugSession { } protected attachRequest(response: DebugProtocol.AttachResponse, args: AttachRequestArguments): void { - this.miDebugger = new MI2(args.gdbpath || "gdb", ["-q", "--interpreter=mi2"]); + this.miDebugger = new MI2(args.gdbpath || "gdb", ["-q", "--interpreter=mi2"], args.debugger_args); this.initDebugger(); this.quit = false; this.attached = !args.remote; diff --git a/src/lldb.ts b/src/lldb.ts index 2b3d4dd..14910b4 100644 --- a/src/lldb.ts +++ b/src/lldb.ts @@ -8,6 +8,7 @@ export interface LaunchRequestArguments { cwd: string; target: string; lldbmipath: string; + debugger_args: string[]; arguments: string; autorun: string[]; ssh: SSHArguments; @@ -19,6 +20,7 @@ export interface AttachRequestArguments { cwd: string; target: string; lldbmipath: string; + debugger_args: string[]; executable: string; autorun: string[]; printCalls: boolean; @@ -36,7 +38,7 @@ class LLDBDebugSession extends MI2DebugSession { } protected launchRequest(response: DebugProtocol.LaunchResponse, args: LaunchRequestArguments): void { - this.miDebugger = new MI2_LLDB(args.lldbmipath || "lldb-mi", []); + this.miDebugger = new MI2_LLDB(args.lldbmipath || "lldb-mi", [], args.debugger_args); this.initDebugger(); this.quit = false; this.attached = false; @@ -97,7 +99,7 @@ class LLDBDebugSession extends MI2DebugSession { } protected attachRequest(response: DebugProtocol.AttachResponse, args: AttachRequestArguments): void { - this.miDebugger = new MI2_LLDB(args.lldbmipath || "lldb-mi", []); + this.miDebugger = new MI2_LLDB(args.lldbmipath || "lldb-mi", [], args.debugger_args); this.initDebugger(); this.quit = false; this.attached = true; diff --git a/src/mago.ts b/src/mago.ts index f108b83..dfe44cf 100644 --- a/src/mago.ts +++ b/src/mago.ts @@ -8,6 +8,7 @@ export interface LaunchRequestArguments { cwd: string; target: string; magomipath: string; + debugger_args: string[]; arguments: string; autorun: string[]; printCalls: boolean; @@ -18,6 +19,7 @@ export interface AttachRequestArguments { cwd: string; target: string; magomipath: string; + debugger_args: string[]; executable: string; autorun: string[]; printCalls: boolean; @@ -43,7 +45,7 @@ class MagoDebugSession extends MI2DebugSession { } protected launchRequest(response: DebugProtocol.LaunchResponse, args: LaunchRequestArguments): void { - this.miDebugger = new MI2_Mago(args.magomipath || "mago-mi", ["-q"]); + this.miDebugger = new MI2_Mago(args.magomipath || "mago-mi", ["-q"], args.debugger_args); this.initDebugger(); this.quit = false; this.attached = false; @@ -72,7 +74,7 @@ class MagoDebugSession extends MI2DebugSession { } protected attachRequest(response: DebugProtocol.AttachResponse, args: AttachRequestArguments): void { - this.miDebugger = new MI2_Mago(args.magomipath || "mago-mi", []); + this.miDebugger = new MI2_Mago(args.magomipath || "mago-mi", [], args.debugger_args); this.initDebugger(); this.quit = false; this.attached = true;