Śledź wykonanie WSZYSTKIEGO Javascript w aplikacji internetowej

Oto sytuacja: Złożona aplikacja internetowa nie działa i możliwe jest konsekwentne wytwarzanie niepożądanego zachowania. Przyczyna problemu nie jest znana.

Propozycja: Śledź ścieżki wykonania całego kodu javascript. Zasadniczo, utwórz dwa potworne logi, które mogą być następnie wprowadzone do algorytmu diff, aby określić, gdzie zachowanie związane z błędem zaczyna się rozbiegać (ponieważ przyczyna nie jest widoczna w zachowaniu aplikacji, i zarówno zrozumieć, jak i uzyskać kopię faktycznego kodu JS uruchamianie jest trudne ze względu na wiele stron, które muszą zostać przełączone i skopiowane z inspektora sieci, co utrudnia fakt, że wszystkie strony są dynamicznie łączone razem z kodem Perla, gdzie znaczące części kodu JS istnieją tylko jako ( dynamic ...) Perl stringi).

Inspektor sieci w Chrome nie ma opcji, o której wiem, aby rejestrować ślad wykonania. Zasadniczo to, co chciałbym, to dziennik wszystkich wierszy JS, który jest wykonywany, w kolejności, w jakiej zostały wykonane. Nie uważam tego za trudną rzecz, ponieważ JS VM jest jednowątkowy. Problem polega po prostu na tym, że istniejące narzędzia do obsługi użytkowników nie są zaprojektowane do tak poważnego debugowania. Jeśli spojrzymy na Profiler w Dev Tools, jest on wyraźnie zdolny do takiego rodzaju oprzyrządowania, jakiego potrzebuję, ale jest zasadniczo zaprojektowany do tego, by robićprofilowy zamiastrysunek kalkowy.

Jak mogę zacząć z tym? Czy mogę w jakiś sposób zbudować Chrome ze źródła?

wyłączyć JIT w V8?log każdego wyrażenia javascript ocenianego przez V8 do pliku

Nie mam żadnego doświadczenia z rozwojem Chrome. Np. linki do dev-builds / branches / versions / distros Chrome / Chromium / Canary (jaka jest różnica?) są mile widziane.

W tym momencie wydaje się, że instrumentowanie przeglądarki za pomocą potężnego śledzenia js nadal będzie łatwiejsze niż przeprojektowanie błędnej aplikacji. Architektura strony jest katastrofą, ale jej funkcjonalność jest złożona i prawie w pełni działa. Muszę tylko znaleźć jeden brakujący element.

Alternatywnie, jeśli narzędzia tego rodzaju już istnieją, jakie są inne słowa kluczowe, za pomocą których mogę je wyszukać? „Śledzenie kodu” jest jedyną rzeczą, jaką mogę wymyślić.

testowałemdynaTrace, co było szczęśliwym zbiegiem okoliczności, ponieważ nasza aplikacja obsługuje IE (w rzeczywistości obsługa Chrome właśnie wyszła z wersji beta), ale to nie powoduje zrzutu tekstu, generuje w zasadziemasywny Drzewo rozszerzeń interfejsu użytkownika Win32, którego nie można odróżnić. To sprawia, że ​​jestem naprawdę smutny, ponieważ jawiedzieć o ile trudniej było w ten sposób pokazać reprezentację śladu, a jednak okazuje się, że jest prawie całkowicie bezużyteczny. Kto będzie przewijał w górę iw dół widok drzewa i zobaczył w nim coś naprawdę przydatnego, w czymś innym niż zabawkowy przykład aplikacji internetowej?

questionAnswers(3)

yourAnswerToTheQuestion