From 9084c796a9bf0130f21476acc933251081f5cd06 Mon Sep 17 00:00:00 2001 From: Danny Coates Date: Mon, 22 Nov 2010 18:04:42 -0700 Subject: [PATCH] additional work on hidden scripts - use regexp instead of strings comparison for config.hidden - step out when break hits hidden script --- bin/inspector.js | 5 ++++ config.json | 15 +---------- lib/session.js | 65 ++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 60 insertions(+), 25 deletions(-) diff --git a/bin/inspector.js b/bin/inspector.js index fe02f498..dfb960f5 100755 --- a/bin/inspector.js +++ b/bin/inspector.js @@ -36,6 +36,11 @@ fs.readFile(path.join(__dirname, '../config.json'), function(err, data) { } else { config = JSON.parse(data); + if (config.hidden) { + config.hidden = config.hidden.map(function(s) { + return new RegExp(s, 'i'); + }); + } } dserver.create(options, config).on('close', function () { console.log('session closed'); diff --git a/config.json b/config.json index 61c9a99c..e29a72b0 100644 --- a/config.json +++ b/config.json @@ -1,16 +1,3 @@ { - "hidden": [ - "buffer.js", - "dns.js", - "events.js", - "freelist.js", - "fs.js", - "http.js", - "net.js", - "node.js", - "path.js", - "stream.js", - "timers.js", - "util.js" - ] + "hidden": [] } \ No newline at end of file diff --git a/lib/session.js b/lib/session.js index a9ebeaa0..42c6ff28 100644 --- a/lib/session.js +++ b/lib/session.js @@ -128,8 +128,10 @@ exports.create = function (conn, debuggerPort, config) { } function breakEvent(obj) { - var data = {}, args; - if(!sourceIDs[obj.body.script.id]) { + var data = {}, + source = sourceIDs[obj.body.script.id], + args; + if(!source) { args = { arguments: { includeSource: true, @@ -138,7 +140,12 @@ exports.create = function (conn, debuggerPort, config) { }}; debug.request('scripts', args, parsedScripts); } - sendBacktrace(); + else if (source.hidden) { + debug.request('continue', { arguments: {stepaction:'out'}}); + } + else { + sendBacktrace(); + } } function parsedScripts(msg) { @@ -168,10 +175,13 @@ exports.create = function (conn, debuggerPort, config) { return s.join('/'); } scripts.forEach(function(s) { - sourceIDs[s.sourceID] = s.url; + var hidden; s.url = shorten(s.path); + hidden = config.hidden && + config.hidden.some(function(r) { return r.test(s.url); }); + sourceIDs[s.sourceID] = { url: s.url, hidden: hidden }; delete s.path; - if (!config.hidden || config.hidden.indexOf(s.url) === -1) { + if (!hidden) { sendEvent('parsedScriptSource', s); } }); @@ -228,7 +238,7 @@ exports.create = function (conn, debuggerPort, config) { if (bp.type === 'scriptId') { data = { sourceID: bp.script_id, - url: sourceIDs[bp.script_id], + url: sourceIDs[bp.script_id].url, line: bp.line + 1, enabled: bp.active, condition: bp.condition, @@ -281,7 +291,16 @@ exports.create = function (conn, debuggerPort, config) { var ref = tokens[2]; if (ref === 'backtrace') { - debug.request('scope', { arguments: { number:scope, frameNumber:frame, inlineRefs:true }}, + debug.request( + 'scope', + { + arguments: + { + number:scope, + frameNumber:frame, + inlineRefs:true + } + }, function(msg) { if (msg.success) { var refs = {}; @@ -313,7 +332,15 @@ exports.create = function (conn, debuggerPort, config) { }]}); seq = 0; }, LOOKUP_TIMEOUT); - debug.request('lookup', { arguments: { handles:[handle], includeSource: false }}, + debug.request( + 'lookup', + { + arguments: + { + handles:[handle], + includeSource: false + } + }, function(msg) { clearTimeout(timeout); //TODO break out commonality with above @@ -370,10 +397,26 @@ exports.create = function (conn, debuggerPort, config) { else { var evalResponse = function (msg) { if (msg.success) { - sendResponse(seq, true, { result: refToObject(msg.body),isException: false }); + sendResponse( + seq, + true, + { + result: refToObject(msg.body), + isException: false + }); } else { - sendResponse(seq, true, { result: { type:'error', description:msg.message }, isException:false }); + sendResponse( + seq, + true, + { + result: + { + type:'error', + description: msg.message + }, + isException:false + }); } } if (methodName === 'evaluateInCallFrame') { @@ -436,7 +479,7 @@ exports.create = function (conn, debuggerPort, config) { var b = msg.body; breakpoints[b.script_id + ':' + (b.line + 1)] = { sourceID: b.script_id, - url: sourceIDs[b.script_id], + url: sourceIDs[b.script_id].url, line: b.line + 1, enabled: enabled, condition: condition,