34

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.

1

3 Answers 3

30

You can use debugger; in code to make breakpoint for firebug. For example:

alert('1');
debugger;
alert('2');

And firebug automatically stops on this keyword.

Sign up to request clarification or add additional context in comments.

2 Comments

Works also in firebug console!
Yep, that is handy, but it's not really as programmatic as I need: eg, dynamically adding a breakpoint at the start of any arbitrary function.
30

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.

Comments

1

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

2 Comments

Can this be executed from the Javascript itself, or is it only from the firebug command line? Adding debug(myFunctionName); to my code throws an error for me.
The original website is no longer active. Most recent Wayback Machine snapshot from 2018: web.archive.org/web/20180412190544/http://michaelsync.net/2007/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.