You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Collect real-time JavaScript traces (number of times a function has been called, locations where exceptions have been thrown, etc).
Easily instrument an entire program with node-theseus.
Plain objects are returned from all API calls so that they can be passed around as JSON. node-theseus does this with a WebSocket. Theseus does it over Chrome's Remote Debugging API (which boils down to a WebSocket).
varfondue=require('fondue'),vm=require('vm');varsrc=fondue.instrument('function foo(a) { return a * 2 }; foo(4)');varsandbox={__tracer: undefined,console: console,require: require};varoutput=vm.runInNewContext(src,sandbox);vartracer=sandbox.__tracer;// created by fondue when instrumented code is run
Track trace points (functions, call sites, etc):
varfunctions={};varnodesHandle=tracer.trackNodes();tracer.newNodes(nodesHandle).forEach(function(n){if(n.type==='function'){functions[n.name]=n;}});varfooNode=functions['foo'];console.log('foo started at',fooNode.start,'and ended at',fooNode.end);// call tracer.newNodes() periodically if you expect new code to be required over time
Track hit counts:
// check how many times trace points have been hitvarhitsHandle=tracer.trackHits();varhits1=tracer.hitCountDeltas(hitsHandle);console.log('foo was called '+(hits1[fooNode.id]||0)+' time');// call repeatedly to track hit counts over timevarhits2=tracer.hitCountDeltas(hitsHandle);console.log('foo was called '+(hits2[fooNode.id]||0)+' times (since last check)');
Access function arguments and return values (and unhandled exceptions):