отладка JS-кода, который вызывает предупреждение () - PullRequest
12 голосов
/ 03 сентября 2010

У меня есть система, которая построена с использованием библиотеки ext-js.Часть системы перечисляет заказы, которые проходят через интернет-магазин.При щелчке строки отображается дополнительная информация о заказе.Несколько дней назад, как только щелкнули по строке, стало появляться сообщение «FIXME: создан panelID ...».После этого нормальное функционирование продолжается, то есть сообщение об ошибке просто раздражает и не нарушает нормальное выполнение после его появления.

Я пытаюсь отладить код JS, чтобы увидеть, при каких обстоятельствах появляется сообщение об ошибке,то есть почему это внезапно начало появляться.Я пытаюсь сделать это с FireBug.Есть ли у кого-нибудь какие-либо советы, которые я мог бы использовать для достижения своей цели - установить, какая строка кода запускает оповещение ()?Любой вклад по этому вопросу высоко ценится.

Ответы [ 3 ]

16 голосов
/ 03 сентября 2010

Firebug имеет API командной строки для программного создания точек останова. Например:

debug(fn);

создает точку останова для функции fn. К сожалению, это не может быть использовано для функций с собственным кодом (встроенные функции, такие как alert). Тем не менее, вы можете использовать этот трюк.

Вставьте блок скрипта в ваш код с помощью этого скрипта-

window.alert_ = window.alert;
window.alert = function() {
    alert_.apply(window,arguments)
};

Что вы сделали, так это переопределили window.alert своим собственным, что делает то же самое.

Теперь добавьте точку останова в firebug с помощью:

debug(alert);

Теперь в следующий раз, когда скрипт вызовет оповещение, вы получите точку останова в своей функции. Затем вы можете проанализировать трассировку стека и выяснить, откуда она вызывается.

4 голосов
/ 02 июня 2015

Вот еще кросс-браузерная версия ответа @ chetan

        window.alert_ = window.alert;
        window.alert = function () {
            debugger;
            alert_.apply(window, arguments);
        };
1 голос
/ 03 сентября 2010

Если вы можете воссоздать его, вы можете просто поставить точку останова на линии, где появляется предупреждение, просмотреть трассировку стека и выяснить путь.

Если вы не можете восстановить его, вам нужно найти источник предупреждения. После этого посмотрите, что вызывает этот метод, и посмотрите, какие значения нужно установить. Идите вверх по пути, пока не найдете событие щелчка.

Нет реального ответа на отладку JavaScript, так как каждое приложение кодируется по-разному. Много времени это ручной труд, чтобы пройтись по коду и выяснить, по какому пути он идет. Добавление watches, console.logs и предупреждений станет вашим другом в определении переменных состояний. Добавьте точки останова и пройдитесь по коду.

...