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