mirror of https://github.com/lukechilds/node.git
Browse Source
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: https://github.com/iojs/io.js/issues/889 PR-URL: https://github.com/iojs/io.js/pull/1282 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>v1.8.0-commit
Jackson Tian
10 years ago
committed by
Ben Noordhuis
2 changed files with 73 additions and 20 deletions
@ -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); |
Loading…
Reference in new issue