From 4d4cfb27ca7718c7df381ac3b257175927cd17d1 Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh Date: Thu, 5 May 2016 17:31:34 +0200 Subject: [PATCH] src,lib: minor --debug-brk cleanup Minor cleanup of how --debug-brk works: * We no longer need to use command line flags to expose the debug object. * Do not depend on the existence of global.v8debug as a mechanism to determine if --debug-brk was specified. * We no longer need to set a dummy listener with --debug-brk. PR-URL: https://github.com/nodejs/node/pull/6599 Reviewed-By: bnoordhuis - Ben Noordhuis Reviewed-By: cjihrig - Colin Ihrig --- lib/internal/bootstrap_node.js | 4 ++-- lib/module.js | 14 ++++++-------- src/node.cc | 10 +++++----- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js index a4324a68e36e8c..7143ff2720d4cb 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 fb233d6c4541fe..344ea97af91953 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 0d85ce77c96cd3..62a00d1f499163 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().