Подтвердить что ты не робот

Debug JS-код, который запускает предупреждение()

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

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

4b9b3361

Ответ 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 и предупреждений будет вашим другом при вычислении переменных состояний. Добавьте точки останова и пройдите код.