diff --git a/lib/module.js b/lib/module.js index aaa6220e40a25e..da8a906f951541 100644 --- a/lib/module.js +++ b/lib/module.js @@ -423,6 +423,10 @@ 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); } } diff --git a/src/node_contextify.cc b/src/node_contextify.cc index ae043eb376a115..e1f11c6a401b07 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc @@ -261,6 +261,12 @@ class ContextifyContext { if (script_source.IsEmpty()) return; // Exception pending. Local debug_context = Debug::GetDebugContext(); + if (debug_context.IsEmpty()) { + // Force-load the debug context. + Debug::GetMirror(args.GetIsolate()->GetCurrentContext(), args[0]); + debug_context = Debug::GetDebugContext(); + CHECK(!debug_context.IsEmpty()); + } Environment* env = Environment::GetCurrent(args); ScopedEnvironment env_scope(debug_context, env); Context::Scope context_scope(debug_context);