diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js index a4324a68e36..7143ff2720d 100644 --- a/lib/internal/bootstrap_node.js +++ b/lib/internal/bootstrap_node.js @@ -136,7 +136,7 @@ preloadModules(); - if (global.v8debug && + if (process._debugWaitConnect && process.execArgv.some(function(arg) { return arg.match(/^--debug-brk(=[0-9]*)?$/); })) { @@ -149,7 +149,7 @@ // breakpoint message on line 1. // // A better fix would be to somehow get a message from the - // global.v8debug object about a connection, and runMain when + // V8 debug object about a connection, and runMain when // that occurs. --isaacs var debugTimeout = +process.env.NODE_DEBUG_TIMEOUT || 50; diff --git a/lib/module.js b/lib/module.js index fb233d6c454..344ea97af91 100644 --- a/lib/module.js +++ b/lib/module.js @@ -4,7 +4,7 @@ const NativeModule = require('native_module'); const util = require('util'); const internalModule = require('internal/module'); const internalUtil = require('internal/util'); -const runInThisContext = require('vm').runInThisContext; +const vm = require('vm'); const assert = require('assert').ok; const fs = require('fs'); const path = require('path'); @@ -508,13 +508,13 @@ Module.prototype._compile = function(content, filename) { // create wrapper function var wrapper = Module.wrap(content); - var compiledWrapper = runInThisContext(wrapper, { + var compiledWrapper = vm.runInThisContext(wrapper, { filename: filename, lineOffset: 0, displayErrors: true }); - if (global.v8debug) { + if (process._debugWaitConnect) { if (!resolvedArgv) { // we enter the repl if we're not given a filename argument. if (process.argv[1]) { @@ -526,11 +526,9 @@ Module.prototype._compile = function(content, filename) { // Set breakpoint on module start if (filename === resolvedArgv) { - // Installing this dummy debug event listener tells V8 to start - // the debugger. Without it, the setBreakPoint() fails with an - // 'illegal access' error. - global.v8debug.Debug.setListener(function() {}); - global.v8debug.Debug.setBreakPoint(compiledWrapper, 0, 0); + delete process._debugWaitConnect; + const Debug = vm.runInDebugContext('Debug'); + Debug.setBreakPoint(compiledWrapper, 0, 0); } } var dirname = path.dirname(filename); diff --git a/src/node.cc b/src/node.cc index 0d85ce77c96..62a00d1f499 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3179,6 +3179,11 @@ void SetupProcessObject(Environment* env, READONLY_PROPERTY(process, "traceDeprecation", True(env->isolate())); } + // --debug-brk + if (debug_wait_connect) { + READONLY_PROPERTY(process, "_debugWaitConnect", True(env->isolate())); + } + // --security-revert flags #define V(code, _, __) \ do { \ @@ -4087,11 +4092,6 @@ void Init(int* argc, exit(9); } - if (debug_wait_connect) { - const char expose_debug_as[] = "--expose_debug_as=v8debug"; - V8::SetFlagsFromString(expose_debug_as, sizeof(expose_debug_as) - 1); - } - // Unconditionally force typed arrays to allocate outside the v8 heap. This // is to prevent memory pointers from being moved around that are returned by // Buffer::Data().