mongobongo
@mongobongo

Как можно выполнить отладку большого js скрипта без точек останова (PHPStorm)?

Здравствуйте подскажите пожалуйста с таким вопросом ? Есть JS скрипт в нём около 30000 строк кода. Возможно ли выполнить отладку без установки точек останова на каждую процедуру ? Чтобы дебаггер или плагин показывал какая выполняется процедура и в каком файле ? И как это сделать в php Storm (Ну или на крайний случай в чём-то другом) ? Вроде как есть плагин SpyJS для php Strom но совсем понимаю как его настроить чтобы он работал в связке с open server (5cf0bd04664e8911092788.jpeg) Может кто нибудь сможет более менее подробно объяснить ?
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Безотносительно того, какой язык или платформа используется, есть классический способ отладки приложений - логирование событий и данных.

Т.е. вы должны покрыть свой код выводом отладочной информацией, в который как минимум должны включить вызовы методов и часть информации о передаваемых параметрах. Полноту и формат логируемой информации и место размещения выбирайте от того, как именно все это будете использовать, например одно время я использовал текстовый формат с машиночитаемым форматом хранения информации (каждая строка - json, определенный формат для указания времени, содержимого стека вызовов методов, аргументов и выделенных переменных) и для анализа логов писал небольшое приложение (в большинстве случаев достаточно взгляда на лог просто выводом в консоль и утилит tail и grep).

На самом деле не обязательно покрывать отладочной информацией ВЕСЬ проект, это слишком раздувает файл логов, затрудняя его анализ и замедляя работу приложения. Обычно вы знаете, в каком месте кода у вас проблема, и именно эту часть покрываете отладочной информацией.

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

p.s. свой колбек на вызов функции в javascript можно зарегистрировать так:
(function() {
    var call = Function.prototype.call;
    Function.prototype.call = function() {
        console.log(this, arguments);
        return call.apply(this, arguments);
    };
}());
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы