Is it possible, in any browser, using any plugin, to enable or disable breakpoints in your code programmatically?
I already know about setting conditional breakpoints, but I'm really interested in setting them via code.
Is it possible, in any browser, using any plugin, to enable or disable breakpoints in your code programmatically?
I already know about setting conditional breakpoints, but I'm really interested in setting them via code.
First you could add a call to a function like __checkDebug(); which will check for a global (or semi-global) variable and when said variable is true, call debugger.
function __checkDebug() {
if (debugme) debugger;
}
all of your functions you're concerned about debugging would be like so:
function foo() {
__checkDebug();
//.... whatever foo was gonna do.
}
You can then take it a little further and dynamically decorate functions while the code is being executed like so:
Function.prototype.debug = function(){
var fn = this;
return function(){
if (debugme) debugger;
return fn.apply(this, arguments);
};
};
foo = foo.debug();
now any time foo is called it will call debugger if the debugme variable is truthy.
Another option would be to build a javascript build system that injects the call after every function declaration - this requires a syntax parser but if you're only looking to modify functions a simple tokenizer for that use case is pretty easy to write - but I'll leave that up to you.
Have a look at the FireBug functions debug(fn) & undebug(fn) names which set a breakpoint on the first line of the named function.
See point #6:
http://michaelsync.net/2007/09/30/firebug-tutorial-script-tab-javascript-debugging