В последних выпусках Greasemonkey, по-видимому, адекватно сообщаются номера строк, но все же лучше отладить и протестировать как можно большую часть вашего скрипта в консоли Firebug перед его использованием в скрипте Greasemonkey.
И, как уже говорилось, jsHint может быть полезен для решения подобных проблем.
В любом случае, предположим, что у меня есть такой скрипт:
// ==UserScript==
// @name _Debugging test
// @include http://YOUR_SERVER/YOUR_PATH/*
// ==/UserScript==
unsafeWindow.console.log ('Line 1', 1 + 0);
unsafeWindow.console.log ('Line 2', 1 + 1);
unsafeWindow.console.log ('Line 3', 1 + 2);
unsafeWindow.console.log ('Line 4 **Throw error here**', 1 + 3 + nonExistantVariable);
unsafeWindow.console.log ('Line 5', 1 + 4);
Когда я запускаю его на 2 моих системах (WinXP, FF: 10.0.2, GM: 0.9.18, Firebug: 1.9.1 и то же самое, кроме GM: 0.9.17), я получаю это на консоли Firebug:
Line 1 1
Line 2 2
Line 3 3
и это на консоли ошибок Firefox ( Ctrl Shift J ):
![Line numbers reported](https://i.stack.imgur.com/L0Fal.gif)
Нажав на ссылку, вы получите:
![Source view](https://i.stack.imgur.com/Fc0QV.gif)
Отсутствует истинная возможность отладки, она не становится намного лучше.