Я отлаживаю код на внешнем сайте (jshint.com). В Chrome я могу успешно устанавливать и перехватывать множество точек останова в коде. Однако в Firefox/Firebug (9.0.1/1.8.4) одни и те же строки кода, фактически огромные куски кода, не могут быть отлажены (а именно, номера строк не зеленого цвета). Кто-нибудь видел что-то подобное и нашел решение?
Невозможно установить те же точки останова в Firefox/Firebug, что и в Chrome.
Ответы (3)
Я использую FB 1.11.3b1 в FF 20.0.1 и заметил эту проблему. Даже после очистки кода в JSLint. Что я действительно обнаружил, так это то, что FB действительно путается со строкой, содержащей одну фигурную скобку, за которой сразу следует встроенный комментарий:
}
// some comment
// lines after this don't have green line numbers, breakpoints ignored
breakpointable_line = false;
Чтобы обойти эту проблему, разделите их пустой строкой.
}
// some comment
// lines after this now have green line numbers, all is well with the world
breakpointable_line = true;
Такую же проблему вижу на ФФ 14.0.1 с ФБ 1.10.0 (совсем свежие версии). Я видел это пару лет назад, я думал, что это ошибка, о которой сообщалось, и она была исправлена, но я вижу это снова. О проблеме сообщается следующим образом: http://code.google.com/p/fbug/issues/detail?id=4646
Обходной путь, о котором сообщается, состоит в том, чтобы разбить ваш JS-файл на более мелкие файлы (не решение проблемы Claytoncarney, отлаживающей JS-файлы с других сайтов).
Проблема возникает в конце functions. Номера строк, где вы устанавливаете точки останова щелчком мыши, выделены зеленым для мест, где вы можете установить точки останова (т. е. не в комментариях или пустых строках и т. д.). Однако в некоторых функциях некоторое количество последних строк в функции имеют серый цвет, а не номера строк, а не зеленый. Конец номеров зеленых строк, по-видимому, соответствует концу блока кода (закрывающая фигурная скобка), который не является концом функции.
Конечно, это происходит с большими файлами JS, поэтому сложно создать минимальный пример, воспроизводящий код. (Я вижу это в файлах JS, загруженных с того же сервера, что и базовая веб-страница, поэтому он не ограничивается внешними сайтами, как это испытал Клейтонкарни.)
в Firefox проблема заключается в операторе catch:
неправильный
catch {
}
Правильно
catch(e) {
}