Added support for program arguments (fix #27)
This commit is contained in:
parent
0d8ae8d7bb
commit
cb9e36d6db
4 changed files with 21 additions and 10 deletions
|
|
@ -28,8 +28,8 @@ export interface SSHArguments {
|
|||
}
|
||||
|
||||
export interface IBackend {
|
||||
load(cwd: string, target: string): Thenable<any>;
|
||||
ssh(args: SSHArguments, cwd: string, target: string): Thenable<any>;
|
||||
load(cwd: string, target: string, procArgs: string): Thenable<any>;
|
||||
ssh(args: SSHArguments, cwd: string, target: string, procArgs: string): Thenable<any>;
|
||||
attach(cwd: string, executable: string, target: string): Thenable<any>;
|
||||
connect(cwd: string, executable: string, target: string): Thenable<any>;
|
||||
start(): Thenable<boolean>;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ export class MI2 extends EventEmitter implements IBackend {
|
|||
super();
|
||||
}
|
||||
|
||||
load(cwd: string, target: string): Thenable<any> {
|
||||
load(cwd: string, target: string, procArgs: string): Thenable<any> {
|
||||
if (!nativePath.isAbsolute(target))
|
||||
target = nativePath.join(cwd, target);
|
||||
return new Promise((resolve, reject) => {
|
||||
|
|
@ -35,17 +35,20 @@ export class MI2 extends EventEmitter implements IBackend {
|
|||
this.process.stdout.on("data", this.stdout.bind(this));
|
||||
this.process.stderr.on("data", this.stdout.bind(this));
|
||||
this.process.on("exit", (() => { this.emit("quit"); }).bind(this));
|
||||
Promise.all([
|
||||
let promises = [
|
||||
this.sendCommand("gdb-set target-async on"),
|
||||
this.sendCommand("environment-directory \"" + escape(cwd) + "\"")
|
||||
]).then(() => {
|
||||
];
|
||||
if (procArgs && procArgs.length)
|
||||
promises.push(this.sendCommand("exec-arguments " + procArgs));
|
||||
Promise.all(promises).then(() => {
|
||||
this.emit("debug-ready")
|
||||
resolve();
|
||||
}, reject);
|
||||
});
|
||||
}
|
||||
|
||||
ssh(args: SSHArguments, cwd: string, target: string): Thenable<any> {
|
||||
ssh(args: SSHArguments, cwd: string, target: string, procArgs: string): Thenable<any> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.isSSH = true;
|
||||
this.sshReady = false;
|
||||
|
|
@ -111,12 +114,15 @@ export class MI2 extends EventEmitter implements IBackend {
|
|||
this.emit("quit");
|
||||
this.sshConn.end();
|
||||
}).bind(this));
|
||||
Promise.all([
|
||||
let promises = [
|
||||
this.sendCommand("gdb-set target-async on"),
|
||||
this.sendCommand("environment-directory \"" + escape(cwd) + "\""),
|
||||
this.sendCommand("environment-cd \"" + escape(cwd) + "\""),
|
||||
this.sendCommand("file-exec-and-symbols \"" + escape(target) + "\"")
|
||||
]).then(() => {
|
||||
];
|
||||
if (procArgs && procArgs.length)
|
||||
promises.push(this.sendCommand("exec-arguments " + procArgs));
|
||||
Promise.all(promises).then(() => {
|
||||
this.emit("debug-ready")
|
||||
resolve();
|
||||
}, reject);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ let relative = posix.relative;
|
|||
export interface LaunchRequestArguments {
|
||||
cwd: string;
|
||||
target: string;
|
||||
arguments: string;
|
||||
autorun: string[];
|
||||
ssh: SSHArguments;
|
||||
printCalls: boolean;
|
||||
|
|
@ -109,7 +110,7 @@ class MI2DebugSession extends DebugSession {
|
|||
this.isSSH = true;
|
||||
this.trimCWD = args.cwd.replace(/\\/g, "/");
|
||||
this.switchCWD = args.ssh.cwd;
|
||||
this.gdbDebugger.ssh(args.ssh, args.ssh.cwd, args.target).then(() => {
|
||||
this.gdbDebugger.ssh(args.ssh, args.ssh.cwd, args.target, args.arguments).then(() => {
|
||||
if (args.autorun)
|
||||
args.autorun.forEach(command => {
|
||||
this.gdbDebugger.sendUserInput(command);
|
||||
|
|
@ -120,7 +121,7 @@ class MI2DebugSession extends DebugSession {
|
|||
});
|
||||
}
|
||||
else {
|
||||
this.gdbDebugger.load(args.cwd, args.target).then(() => {
|
||||
this.gdbDebugger.load(args.cwd, args.target, args.arguments).then(() => {
|
||||
if (args.autorun)
|
||||
args.autorun.forEach(command => {
|
||||
this.gdbDebugger.sendUserInput(command);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue