diff options
author | Aleksei Koziatinskii <ak239spb@gmail.com> | 2019-06-25 15:28:56 -0700 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2019-07-22 21:20:43 +0200 |
commit | 77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee (patch) | |
tree | 1d7f1b9f8fb9ca9b308f496683d7130218a42549 /lib | |
parent | 49e4d72b5a7fcf643e1476b0f382ed08cacd6c0a (diff) | |
download | android-node-v8-77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee.tar.gz android-node-v8-77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee.tar.bz2 android-node-v8-77bdbc5f0d1bd7caada99d0097bca2a9bb1f4cee.zip |
inspector: add inspector.waitForDebugger()
This method blocks current node process until a client sends
Runtime.runifWaitingForDebugger.
It can be useful when we need to report inspector.url() before
waiting for connection:
```
inspector.open(0, undefined, false);
fs.writeFileSync(someFileName, inspector.url());
inspector.waitForDebugger();
```
PR-URL: https://github.com/nodejs/node/pull/28453
Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/inspector.js | 22 | ||||
-rw-r--r-- | lib/internal/errors.js | 1 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/inspector.js b/lib/inspector.js index 4bec628b7d..198d87ae44 100644 --- a/lib/inspector.js +++ b/lib/inspector.js @@ -8,6 +8,7 @@ const { ERR_INSPECTOR_COMMAND, ERR_INSPECTOR_NOT_AVAILABLE, ERR_INSPECTOR_NOT_CONNECTED, + ERR_INSPECTOR_NOT_ACTIVE, ERR_INVALID_ARG_TYPE, ERR_INVALID_CALLBACK } = require('internal/errors').codes; @@ -19,7 +20,12 @@ if (!hasInspector) const EventEmitter = require('events'); const { validateString } = require('internal/validators'); const util = require('util'); -const { Connection, open, url } = internalBinding('inspector'); +const { + Connection, + open, + url, + waitForDebugger +} = internalBinding('inspector'); const connectionSymbol = Symbol('connectionProperty'); const messageCallbacksSymbol = Symbol('messageCallbacks'); @@ -105,10 +111,22 @@ class Session extends EventEmitter { } } +function inspectorOpen(port, host, wait) { + open(port, host); + if (wait) + waitForDebugger(); +} + +function inspectorWaitForDebugger() { + if (!waitForDebugger()) + throw new ERR_INSPECTOR_NOT_ACTIVE(); +} + module.exports = { - open: (port, host, wait) => open(port, host, !!wait), + open: inspectorOpen, close: process._debugEnd, url: url, + waitForDebugger: inspectorWaitForDebugger, // This is dynamically added during bootstrap, // where the console from the VM is still available console: require('internal/util/inspector').consoleFromVM, diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 8fa56e315e..23dbb79196 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -882,6 +882,7 @@ E('ERR_INPUT_TYPE_NOT_ALLOWED', '--input-type can only be used with string ' + E('ERR_INSPECTOR_ALREADY_CONNECTED', '%s is already connected', Error); E('ERR_INSPECTOR_CLOSED', 'Session was closed', Error); E('ERR_INSPECTOR_COMMAND', 'Inspector error %d: %s', Error); +E('ERR_INSPECTOR_NOT_ACTIVE', 'Inspector is not active', Error); E('ERR_INSPECTOR_NOT_AVAILABLE', 'Inspector is not available', Error); E('ERR_INSPECTOR_NOT_CONNECTED', 'Session is not connected', Error); E('ERR_INTERNAL_ASSERTION', (message) => { |