src, inspector: add --inspect-brk option
add an --inspect-brk option which breaks on first line of user script. same behavior as old --debug-brk flag. PR-URL: https://github.com/nodejs/node/pull/8979 Reviewed-By: Eugene Ostroukhov <eostroukhov@chromium.org> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@keybase.io>
This commit is contained in:
parent
f5d92f3563
commit
6ff3b03240
@ -3480,6 +3480,12 @@ static void PrintHelp() {
|
|||||||
" does not appear to be a terminal\n"
|
" does not appear to be a terminal\n"
|
||||||
" -r, --require module to preload (option can be "
|
" -r, --require module to preload (option can be "
|
||||||
"repeated)\n"
|
"repeated)\n"
|
||||||
|
#if HAVE_INSPECTOR
|
||||||
|
" --inspect[=host:port] activate inspector on host:port\n"
|
||||||
|
" (default: 127.0.0.1:9229)\n"
|
||||||
|
" --inspect-brk[=host:port] activate inspector on host:port\n"
|
||||||
|
" and break at start of user script\n"
|
||||||
|
#endif
|
||||||
" --no-deprecation silence deprecation warnings\n"
|
" --no-deprecation silence deprecation warnings\n"
|
||||||
" --trace-deprecation show stack traces on deprecations\n"
|
" --trace-deprecation show stack traces on deprecations\n"
|
||||||
" --throw-deprecation throw an exception on deprecations\n"
|
" --throw-deprecation throw an exception on deprecations\n"
|
||||||
|
@ -30,7 +30,8 @@ int parse_and_validate_port(const std::string& port) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::pair<std::string, int> split_host_port(const std::string& arg) {
|
std::pair<std::string, int> split_host_port(const std::string& arg) {
|
||||||
// IPv6, no port
|
// remove_brackets only works if no port is specified
|
||||||
|
// so if it has an effect only an IPv6 address was specified
|
||||||
std::string host = remove_brackets(arg);
|
std::string host = remove_brackets(arg);
|
||||||
if (host.length() < arg.length())
|
if (host.length() < arg.length())
|
||||||
return {host, -1};
|
return {host, -1};
|
||||||
@ -46,6 +47,7 @@ std::pair<std::string, int> split_host_port(const std::string& arg) {
|
|||||||
}
|
}
|
||||||
return {"", parse_and_validate_port(arg)};
|
return {"", parse_and_validate_port(arg)};
|
||||||
}
|
}
|
||||||
|
// host and port found
|
||||||
return std::make_pair(remove_brackets(arg.substr(0, colon)),
|
return std::make_pair(remove_brackets(arg.substr(0, colon)),
|
||||||
parse_and_validate_port(arg.substr(colon + 1)));
|
parse_and_validate_port(arg.substr(colon + 1)));
|
||||||
}
|
}
|
||||||
@ -90,6 +92,7 @@ bool DebugOptions::ParseOption(const std::string& option) {
|
|||||||
argument = option.substr(pos + 1);
|
argument = option.substr(pos + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --debug and --inspect are mutually exclusive
|
||||||
if (option_name == "--debug") {
|
if (option_name == "--debug") {
|
||||||
debugger_enabled_ = true;
|
debugger_enabled_ = true;
|
||||||
} else if (option_name == "--debug-brk") {
|
} else if (option_name == "--debug-brk") {
|
||||||
@ -98,7 +101,15 @@ bool DebugOptions::ParseOption(const std::string& option) {
|
|||||||
} else if (option_name == "--inspect") {
|
} else if (option_name == "--inspect") {
|
||||||
debugger_enabled_ = true;
|
debugger_enabled_ = true;
|
||||||
enable_inspector = true;
|
enable_inspector = true;
|
||||||
} else if (option_name != "--debug-port" || !has_argument) {
|
} else if (option_name == "--inspect-brk") {
|
||||||
|
debugger_enabled_ = true;
|
||||||
|
enable_inspector = true;
|
||||||
|
wait_connect_ = true;
|
||||||
|
} else if ((option_name != "--debug-port" &&
|
||||||
|
option_name != "--inspect-port") ||
|
||||||
|
!has_argument) {
|
||||||
|
// only other valid possibility is --debug-port,
|
||||||
|
// which requires an argument
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,20 +123,17 @@ bool DebugOptions::ParseOption(const std::string& option) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!has_argument) {
|
// argument can be specified for *any* option to specify host:port
|
||||||
return true;
|
if (has_argument) {
|
||||||
|
std::pair<std::string, int> host_port = split_host_port(argument);
|
||||||
|
if (!host_port.first.empty()) {
|
||||||
|
host_name_ = host_port.first;
|
||||||
|
}
|
||||||
|
if (host_port.second >= 0) {
|
||||||
|
port_ = host_port.second;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME(bnoordhuis) Move IPv6 address parsing logic to lib/net.js.
|
|
||||||
// It seems reasonable to support [address]:port notation
|
|
||||||
// in net.Server#listen() and net.Socket#connect().
|
|
||||||
std::pair<std::string, int> host_port = split_host_port(argument);
|
|
||||||
if (!host_port.first.empty()) {
|
|
||||||
host_name_ = host_port.first;
|
|
||||||
}
|
|
||||||
if (host_port.second >= 0) {
|
|
||||||
port_ = host_port.second;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,7 +428,7 @@ Harness.prototype.expectShutDown = function(errorCode) {
|
|||||||
|
|
||||||
exports.startNodeForInspectorTest = function(callback) {
|
exports.startNodeForInspectorTest = function(callback) {
|
||||||
const child = spawn(process.execPath,
|
const child = spawn(process.execPath,
|
||||||
[ '--inspect', '--debug-brk', mainScript ]);
|
[ '--inspect-brk', mainScript ]);
|
||||||
|
|
||||||
const timeoutId = timeout('Child process did not start properly', 4);
|
const timeoutId = timeout('Child process did not start properly', 4);
|
||||||
|
|
||||||
|
@ -26,3 +26,5 @@ function test(arg) {
|
|||||||
|
|
||||||
test('--debug-brk');
|
test('--debug-brk');
|
||||||
test('--debug-brk=5959');
|
test('--debug-brk=5959');
|
||||||
|
test('--inspect-brk');
|
||||||
|
test('--inspect-brk=9230');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user