-
Notifications
You must be signed in to change notification settings - Fork 30.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
debugger: don't spawn child process in remote mode
When debug in remote mode with host:port or pid, the interface spawn child process also. If the debugger agent is running, will get following output: ``` < Error: listen EADDRINUSE :::5858 < at Object.exports._errnoException (util.js:734:11) < at exports._exceptionWithHostPort (util.js:757:20) < at Agent.Server._listen2 (net.js:1155:14) < at listen (net.js:1181:10) < at Agent.Server.listen (net.js:1268:5) < at Object.start (_debug_agent.js:21:9) < at startup (node.js:68:9) < at node.js:799:3 ``` This fix won't spawn child process and no more error message was shown. When use `iojs debug`, the tip information just like this: ``` Usage: iojs debug script.js ``` This fix will display the advance usage also: ``` Usage: iojs debug script.js iojs debug <host>:<port> iojs debug -p <pid> ``` Fixes: #889 PR-URL: #1282 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
- Loading branch information
1 parent
955c150
commit a2ea168
Showing
2 changed files
with
73 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
var common = require('../common'); | ||
var assert = require('assert'); | ||
var spawn = require('child_process').spawn; | ||
|
||
var port = common.PORT + 1337; | ||
var buffer = ''; | ||
var expected = []; | ||
var scriptToDebug = common.fixturesDir + '/empty.js'; | ||
|
||
function fail() { | ||
assert(0); // `iojs --debug-brk script.js` should not quit | ||
} | ||
|
||
// running with debug agent | ||
var child = spawn(process.execPath, ['--debug-brk=5959', scriptToDebug]); | ||
|
||
console.error(process.execPath, '--debug-brk=5959', scriptToDebug); | ||
|
||
// connect to debug agent | ||
var interfacer = spawn(process.execPath, ['debug', 'localhost:5959']); | ||
|
||
console.error(process.execPath, 'debug', 'localhost:5959'); | ||
interfacer.stdout.setEncoding('utf-8'); | ||
interfacer.stdout.on('data', function(data) { | ||
data = (buffer + data).split('\n'); | ||
buffer = data.pop(); | ||
data.forEach(function(line) { | ||
interfacer.emit('line', line); | ||
}); | ||
}); | ||
|
||
interfacer.on('line', function(line) { | ||
line = line.replace(/^(debug> *)+/, ''); | ||
console.log(line); | ||
var expected = '\bconnecting to localhost:5959 ... ok'; | ||
assert.ok(expected == line, 'Got unexpected line: ' + line); | ||
}); | ||
|
||
// give iojs time to start up the debugger | ||
setTimeout(function() { | ||
child.removeListener('exit', fail); | ||
child.kill(); | ||
interfacer.removeListener('exit', fail); | ||
interfacer.kill(); | ||
}, 2000); | ||
|
||
process.on('exit', function() { | ||
assert(child.killed); | ||
assert(interfacer.killed); | ||
}); | ||
|
||
interfacer.stderr.pipe(process.stderr); |