summaryrefslogtreecommitdiff
path: root/lib/_debugger.js
diff options
context:
space:
mode:
authorAlexis Campailla <alexis@janeasystems.com>2013-12-06 08:58:15 -0800
committerTrevor Norris <trev.norris@gmail.com>2013-12-06 13:54:32 -0800
commit6e33718c36b826698205677e8563bd50d2f884ac (patch)
treebe9c9451cce1c2218582f7314d51fe742bae1f22 /lib/_debugger.js
parent1903240f2a5a3fbf723e7736c5dd14f906de98fb (diff)
downloadnode-pr6651.tar.gz
debug: connect after child is readypr6651
We now wait to connect to the debuggee until we know that its error stream has data, to ensure that the output message "connecting..... ok" appears after "Debugger listening on port xyz" I also increased the test timeout to let the more complex tests finish in time on Windows This change fixes the following unit tests on Windows: test-debugger-repl.js test-debugger-repl-term.js test-debugger-repl-utf8.js test-debugger-repl-restart.js
Diffstat (limited to 'lib/_debugger.js')
-rw-r--r--lib/_debugger.js20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/_debugger.js b/lib/_debugger.js
index 4dd9f5363..f9e24768f 100644
--- a/lib/_debugger.js
+++ b/lib/_debugger.js
@@ -25,6 +25,7 @@ var util = require('util'),
vm = require('vm'),
repl = require('repl'),
inherits = util.inherits,
+ assert = require('assert'),
spawn = require('child_process').spawn;
exports.start = function(argv, stdin, stdout) {
@@ -1612,6 +1613,7 @@ Interface.prototype.trySpawn = function(cb) {
childArgs = this.args;
this.killChild();
+ assert(!this.child);
if (this.args.length === 2) {
var match = this.args[1].match(/^([^:]+):(\d+)$/);
@@ -1647,12 +1649,10 @@ Interface.prototype.trySpawn = function(cb) {
}
}
- if (!this.child) {
- this.child = spawn(process.execPath, childArgs);
+ this.child = spawn(process.execPath, childArgs);
- this.child.stdout.on('data', this.childPrint.bind(this));
- this.child.stderr.on('data', this.childPrint.bind(this));
- }
+ this.child.stdout.on('data', this.childPrint.bind(this));
+ this.child.stderr.on('data', this.childPrint.bind(this));
this.pause();
@@ -1709,8 +1709,10 @@ Interface.prototype.trySpawn = function(cb) {
client.connect(port, host);
}
- setTimeout(function() {
- self.print('connecting to port ' + port + '..', true);
- attemptConnect();
- }, 50);
+ this.child.stderr.once('data', function() {
+ setImmediate(function() {
+ self.print('connecting to port ' + port + '..', true);
+ attemptConnect();
+ });
+ });
};