Debug JS-код, который запускает предупреждение()
У меня есть система, которая построена с использованием библиотеки ext-js. Часть системы перечисляет заказы, которые протекают через интернет-магазин. При нажатии на строку отображаются дополнительные данные заказа. Несколько дней назад появилось сообщение "FIXME: created panelID...", как только щелкнула строка. После этого нормальное функционирование продолжается, то есть сообщение об ошибке просто раздражает и не нарушает нормальное выполнение после его появления.
Я пытаюсь отладить JS-код, чтобы увидеть, при каких обстоятельствах появляется сообщение об ошибке, а именно, почему он внезапно начал появляться. Я пытаюсь сделать это с помощью FireBug. У кого-нибудь есть какие-то советы, которые я мог бы использовать для достижения моей цели - установить, какая строка кода запускает alert()?
Любой вклад в этот вопрос очень ценится.
Ответы
Ответ 1
Firebug имеет API командной строки для программного создания контрольных точек. Например:
debug(fn);
создает точку останова для функции fn
. К сожалению, это невозможно использовать для функций с собственным кодом (встроенные функции, такие как alert
). Однако вы можете использовать этот трюк.
Вставьте блок script в свой код с помощью этого script -
window.alert_ = window.alert;
window.alert = function() {
alert_.apply(window,arguments)
};
Что вы сделали, так это переопределить window.alert своим собственным, что делает то же самое.
Теперь добавьте точку останова в firebug с помощью:
debug(alert);
В следующий раз, когда вызов script вызывает предупреждение, вы получите контрольную точку в своей функции. Затем вы можете проанализировать трассировку стека и выяснить, откуда он вызван.
Ответ 2
Здесь более кросс-браузерная версия ответа @chetan
window.alert_ = window.alert;
window.alert = function () {
debugger;
alert_.apply(window, arguments);
};
Ответ 3
Если вы можете его воссоздать, вы можете просто поместить точку разрыва в строку, где появляется предупреждение, и просмотреть трассировку стека и выяснить путь.
Если вы не можете его воссоздать, вам нужно найти, откуда приходит предупреждение. После этого посмотрите, что вызывает этот метод, и посмотрите, какие значения нужно установить. Пройдите вверх по пути, пока не найдете событие click.
Нет реального ответа на отладку JavaScript, поскольку каждое приложение кодируется по-разному. Много времени это ручной труд, проходящий через код и выясняющий, какой путь он принимает. Добавление часов, console.logs и предупреждений будет вашим другом при вычислении переменных состояний. Добавьте точки останова и пройдите код.