node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


Build Status Build status npm version


Provides extending API for node internal debugger protocol (based on v8 debugger protocol)

This is a part of node-inspector.


npm install v8-debug


registerCommand(name, callback)

Registers new debug processor command, like lookup.

callback accepts two arguments - request and response.

You need to modify response.body if you want to return something to caller.

debug.registerCommand('_lookup', function(request, response) {
  var test = request.attributes;
  //do someting here 
  //and modify response 
  response.body = {
    test: test


This is a shortcut for:

debug.registerCommand('someEvent', debug.commandToEvent);

execCommand(commandName, attributes)

Calls debug processor command like 'lookup'.

attributes will be passed to registerCommand.callback as request.attributes.

attributes needs to be valid JSON object.

debug.registerCommand('_lookup', function(request, response) {
  var test = request.attributes;
  //do someting here 
  //and modify response 
  response.body = {
    test: test
debug.execCommand('_lookup', { attr: 'test' });

emitEvent(eventName, attributes)

This is a semantic alias for execCommand

debug.emitEvent('myEvent', { attr: 'test' });

commandToEvent(request, response)

response object has a different structure for commands and events.

By default registerCommand.callback receives command's response.

This is a small converter.

debug.registerCommand('someEvent1', function(request, response) {
  debug.commandToEvent(request, response);
debug.registerCommand('someEvent2', debug.commandToEvent);

Use debug.registerEvent instead of this.


(alias get)

Evaluates string or function (will be stringifyed) in debug context.

var MakeMirror = debug.get('MakeMirror');
var mirror = MakeMirror({ test: 1 });

getFromFrame(index, value)

Tries to receive a value from targeted frame scopes

function a(options) {
function b() {
  // There is no info about `options` object 
  var options = debug.getFromFrame(1, 'options');


Enables experimental usage of WebKit protocol

registerAgentCommand(command, parameters, callback)

Experimental method for registering WebKit protocol handlers


Simple console.log checking

var debug = require('v8-debug');
console.log = (function(fn) {
  return function() {
    debug.emitEvent('console.log', {message: arguments[0]} /*, userdata*/);
    return fn.apply(console, arguments);
} (console.log));

For more experience see protocol documentation