Вот ситуация: сложное веб-приложение не работает, и можно последовательно создавать нежелательное поведение. Причина проблемы неизвестна.
Предложение: отслеживать пути выполнения всего кода javascript. По существу, создайте два чудовищных журнала, которые затем могут быть поданы в алгоритм diff, чтобы определить, где поведение, связанное с ошибкой, начинает расходиться (поскольку причина не очевидна из поведения приложения и как понимание, так и получение копии фактического JS-кода из-за большого количества страниц, которые необходимо переключить и скопировать из веб-инспектора. Сделать это сложно, так это то, что все страницы динамически сращиваются вместе с кодом Perl, где значительная часть JS-кода существует только как ( динамические...) Perl-строки).
У веб-инспектора в Chrome нет опции, которую я знаю для регистрации трассировки выполнения. В принципе, я хотел бы написать журнал каждой строки JS, который выполняется, в том порядке, в котором они выполняются. Я не считаю это трудным делом получить, учитывая, что JS VM является однопоточным. Проблема в том, что существующие инструменты, ориентированные на пользователя, не предназначены для этой довольно хардкорной отладки. Если мы посмотрим на Profiler в Dev Tools, он явно способен к тому, что мне нужно, но он в принципе предназначен для профилирования вместо трассировки.
Как я могу начать с этого? Есть ли способ создать Chrome из источника, где я могу
- выключить JIT в V8?
- регистрировать каждое выражение javascript, оцениваемое V8, в файл
У меня нет опыта работы с Chrome. Так, например, ссылки на dev-builds/branches/versions/distros из Chrome/Chromium/Canary (какая разница?) приветствуются.
В этот момент кажется, что инструментарий для браузера с мощным трассировкой js по-прежнему будет проще, чем переработать багги-приложение. Архитектура страницы - это катастрофа, но функциональность сложна и почти полностью работает. Мне просто нужно найти один недостающий кусок.
В качестве альтернативы, если инструменты такого рода уже существуют, каковы некоторые другие ключевые слова, с которыми я могу их искать? "Трассировка кода" - это почти единственное, что я могу придумать.
Я протестировал dynaTrace, что было счастливым совпадением, поскольку наше приложение поддерживает IE (действительно, поддержка Chrome просто вышла из бета-версии), но это делает не создает текстовый дамп, он в основном производит массивный Win32 UI expando-tree, который невозможно отличить. Мне это очень грустно, потому что я знаю, насколько сложнее было сделать представление следа таким образом, и все же оно оказывается почти бесполезным. Кто собирается прокручивать вверх и вниз по этому древовидному представлению и видеть что-нибудь действительно полезное в нем, в чем-либо, кроме игрушечного примера веб-приложения?