How to debug Greasemonkey script with the Firebug extension?
Solution 1
Updatier: The Mene+Shuman fix now is busted with Firefox 30 and Firebug 2. Firefox 31 may provide workarounds (will investigate). In the meantime, use the "General workaround strategies" listed below.
Update: This answer is now obsolete.
If you open about:config
and
set extensions.firebug.filterSystemURLs
to false
then you can use Firebug to debug the Greasemonkey script just like any other.
This works irregardless of the @grant
mode.
See Mene's answer -- with an assist from Shuman.
Old answer:
Because Greasemonkey operates in a sandbox, Firebug cannot see it. There is no easy way around this.
General workaround strategies:
Test all parts of a GM script that don't use
GM_
functions, in Firebug's JavaScript console first. Minimize use ofGM_
functions and don't useGM_log()
at all.All of Firebug's
console
functions work great from within a GM script.
Solution 2
Note: this answer refers to old versions of Firefox. Firebug is no longer available, but lives on in the Developer Edition of Firefox.
Current Firefox and Firebug can now debug current Greasemonkey scripts just like any other javascript. Just find your *.user.js
script in the dropdown menu. The console also works.
This works at least on Firefox 28.0 and Firebug 1.12.7; I haven't tried earlier versions.
Note: In order to get it to work, you probably have to set extensions.firebug.filterSystemURLs
to false. See "Profiling Greasemonkey scripts" in the Firebug, bug tracker. (Thanks to Shuman)
Solution 3
var e = document.createElement("script");
e.src = 'http://www.xxxxxxxx.com/yyyyyyyy.js';
e.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
you can add this to your xxx.user.js, and install it in greasemonkey.
Then, you can debug your js as you wish.
Solution 4
None of the other solutions here worked for me, but Jan Odvarko's answer on how to debug Firefox extensions worked perfectly for GreaseMonkey scripts as well:
On Firefox 19 or later, it's possible to use the built-in JS debugger on the browser itself. Go to about:config and set the following two prefs:
devtools.chrome.enabled: true devtools.debugger.remote-enabled: true
After you restart the browser, you can access the Browser Debugger through Tools > Web Developer > Browser Toolbox.
(note that you must accept the incoming connection)
See more at: https://developer.mozilla.org/en-US/docs/Mozilla/Debugging/Debugging_JavaScript#JavaScript_Debugger
Then just search for the name of your userscript and start debugging.
Solution 5
It can be done using native Firefox debugger as it was mentioned before. Below is the instruction for modern versions of Firefox.
Set the following preferences in about:config
:
devtools.chrome.enabled: true
devtools.debugger.remote-enabled: true
devtools.debugger.prompt-connection: false
Open the global script debugger window via Tools → Web Developer → Browser Toolbox → Debugger (or Ctrl+Shift+Alt+I) .
Search for the name of your userscript and start debugging.

WolveFred
Updated on April 18, 2022Comments
-
WolveFred 8 months
I didn't find a way to debug Greasemonkey scripts with the Firebug extension.
Does anyone know how to do this ?
Thanks.
-
WolveFred almost 11 yearsGood. You meant "bigml's suggestion" in fact ! Of course, this method implies we don't use the GM functions.
-
cheesus over 10 yearsthis is great, one can really debug GreaseMonkey/Tampermonkey scripts in Chromebug
-
Matej over 9 yearsHmm, you are using Jquery to load Jquery from google's CDN.. Does it make sense?
-
sijpkes over 9 yearsNo it doesn't, matejkranny. It's amazing it has taken 10 months for anyone to notice that one! I've amended it accordingly.
-
Motomotes over 9 yearsThis seems to no longer be available.
-
Adobe almost 9 yearsLatest chromebug is currenlty 1.8. Which requires firebug 1.8. Which requires firefox 4. Sucks.
-
Mene almost 9 yearsGreasemonkey can now be debugged like any js. See my answer for more details.
-
Brock Adams almost 9 yearsAre you sure? You can see the GM scripts but breakpoints, watches, etc. do not work -- especially on scripts that aren't in
@grant none
mode and/or use event listeners. If you have a recipe that works for actual debugging, post details. -
Mene almost 9 yearsI haven't done anything special. I created a new script and I debugged it. Breakpoints work fine (as you can see in the screenshot) and in another script I also used events: addEventListener('click',...), dispatchEvent, fireEvent, as well as a MutationObserver. All in a GM that has
@grant none
. Everything worked as expected. -
Brock Adams almost 9 yearsI just rechecked and I wasn't able to get it to work on any but the simplest of scripts. Breakpoints and watches did not work on any of the three scripts I have running on this page, for example. (Here's one of the scripts, you can test for yourself.)
-
Ferran Salguero over 8 yearsI have tested it on Firefox 28 and Firebug 1.12.8 and it just works
-
Shuman over 8 yearsit worked on my firefox 29 and firebug 1.12.8 yesterday, but magically it doesn't work today ( just doensn't see the userscript in the dropdown menu anymore no matter what i try) ... orz
-
Shuman over 8 years@BrockAdams holycr*p finally got it working by setting
extensions.firebug.filterSystemURLs
tofalse
inabout:config
, see this -
Brock Adams over 8 years@Shuman, Excellent and verified; thanks! Edited this info into the two applicable answers.
-
Shuman over 8 yearsjust now my firefox auto updated to 30.0 and firebug to 2.0, and i can't debug GM again. before i figured out why, i have to downgrade firebug to 1.12.8 then it works. don't know how to make it work in firebug 2.0 right now
-
stellarpower over 6 yearsGreat solution, there are loads of simple web servers out there, like Python's SimpleHTTPServer, or better, WEBrick in Ruby.
-
Mukesh Agarwal over 3 yearsthe answer is obsolete now
-
Brock Adams over 3 years@MukeshAgarwal, Yes Firebug is obsolete for most users, but believe it or not some people still use old versions of Firefox or equivalents like Pale Moon. Anyway, see Meta Stack Overflow for how we handle "obsolete" posts. (They're generally left up for people using antique tools, and for historical purposes.)
-
Gerold Broser over 3 yearsSince FF 57's WebExtensions and, hence, Greasemonkey 4, user scripts are not stored as files in the profile folder but in a SQLite DB and I do not find them in the Browser Debugger's Open file... box.
-
Gerold Broser over 3 yearsWhat does "modern" mean? >= FF 57 (with WebExtensions), too? Since Greasemonkey 4 user scripts are not stored as files in the profile folder but in a SQLite DB and I do not find them in the Browser Debugger's Open file... box.
-
Brock Adams over 3 years@GeroldBroser, I haven't yet worked around the changes in Firefox (and have no personal need). Until someone answers your new question, (A) use the "Old answer" strategies here and/or (B) Load the script in Tampermonkey on Chrome and use Chrome's debugging to get through your script's issues AMAP.
-
Gerold Broser over 3 yearsThx, however, for your reply, but AMAP?
-
Brock Adams over 3 years@GeroldBroser, Sure. But much more commonly: "As much as possible".
-
0xC0000022L over 2 yearsHave an upvote for the diligence in updating the answer in order to make it known that this no longer works.