Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Expose the V8 debug object process.debug

Add one duplicate test from V8, just to make sure it works.
  • Loading branch information...
commit d9fbb8a58071e339711e8c0ceeb31de5a645fd42 1 parent 3214116
@ry ry authored
View
4 lib/module.js
@@ -420,8 +420,8 @@ Module.prototype._compile = function (content, filename) {
+ "\n});";
var compiledWrapper = process.compile(wrapper, filename);
- if (filename === process.argv[1] && global.v8debug) {
- global.v8debug.Debug.setBreakPoint(compiledWrapper, 0, 0);
+ if (filename === process.argv[1] && process._debugWaitConnect) {
+ process.debug.setBreakPoint(compiledWrapper, 0, 0);
}
compiledWrapper.apply(self.exports, [self.exports, require, self, filename, dirname]);
} else {
View
22 src/node.cc
@@ -1631,6 +1631,9 @@ static void Load(int argc, char *argv[]) {
// who do not like how 'src/node.js' setups the module system but do like
// Node's I/O bindings may want to replace 'f' with their own function.
+ process->Set(String::NewSymbol("_debugWaitConnect"),
+ node::debug_wait_connect ? True() : False());
+
Local<Value> args[1] = { Local<Value>::New(process) };
f->Call(global, 1, args);
@@ -1741,16 +1744,15 @@ int main(int argc, char *argv[]) {
int v8argc = node::option_end_index;
char **v8argv = argv;
- if (node::debug_wait_connect) {
- // v8argv is a copy of argv up to the script file argument +2 if --debug-brk
- // to expose the v8 debugger js object so that module.js can set
- // a breakpoint on the first line of the startup script
- v8argc += 2;
- v8argv = new char*[v8argc];
- memcpy(v8argv, argv, sizeof(argv) * node::option_end_index);
- v8argv[node::option_end_index] = const_cast<char*>("--expose_debug_as");
- v8argv[node::option_end_index + 1] = const_cast<char*>("v8debug");
- }
+ // v8argv is a copy of argv up to the script file argument +2
+ // to expose the v8 debugger js object so that module.js can set
+ // a breakpoint on the first line of the startup script
+ v8argc += 2;
+ v8argv = new char*[v8argc];
+ memcpy(v8argv, argv, sizeof(argv) * node::option_end_index);
+ v8argv[node::option_end_index] = const_cast<char*>("--expose_debug_as");
+ v8argv[node::option_end_index + 1] = const_cast<char*>("v8debug");
+
V8::SetFlagsFromCommandLine(&v8argc, v8argv, false);
// Ignore SIGPIPE
View
3  src/node.js
@@ -233,6 +233,9 @@ global.console.assert = function(expression){
global.Buffer = module.requireNative('buffer').Buffer;
+process.debug = global.v8debug.Debug;
+global.v8debug = undefined;
+
process.exit = function (code) {
process.emit("exit");
process.reallyExit(code);
View
27 test/simple/test-liveedit.js
@@ -0,0 +1,27 @@
+common = require("../common");
+assert = require("assert");
+
+
+// This is a duplicate of deps/v8/test/mjsunit/debug-liveedit-1.js
+// Just exercises the process.debug object.
+
+eval("var something1 = 25; "
+ + " function ChooseAnimal() { return 'Cat'; } "
+ + " ChooseAnimal.Helper = function() { return 'Help!'; }");
+
+assert.equal("Cat", ChooseAnimal());
+
+var script = process.debug.findScript(ChooseAnimal);
+
+var orig_animal = "Cat";
+var patch_pos = script.source.indexOf(orig_animal);
+var new_animal_patch = "Cap' + 'y' + 'bara";
+
+var change_log = new Array();
+process.debug.LiveEdit.TestApi.ApplySingleChunkPatch(script,
+ patch_pos,
+ orig_animal.length,
+ new_animal_patch,
+ change_log);
+
+assert.equal("Capybara", ChooseAnimal());
Please sign in to comment.
Something went wrong with that request. Please try again.