Verfolgen Sie die Ausführung von ALLEN Javascript in einer Web-App

Hier ist die Situation: Eine komplexe Web-App funktioniert nicht und es ist möglich, durchgehend unerwünschtes Verhalten zu erzeugen. Die Ursache des Problems ist nicht bekannt.

Vorschlag: Verfolgen Sie die Ausführungspfade des gesamten Javascript-Codes. Erstellen Sie im Wesentlichen zwei monströse Protokolle, die dann in einen Diff-Algorithmus eingespeist werden können, um festzustellen, wo das Verhalten in Bezug auf den Fehler zu divergieren beginnt (da die Ursache nicht aus dem Anwendungsverhalten hervorgeht und Sie eine Kopie des tatsächlichen JS-Codes erfassen und erhalten können) Das Ausführen ist schwierig, da viele Seiten in den Webinspektor verschoben und aus diesem kopiert werden müssen. Dies wird durch die Tatsache erschwert, dass alle Seiten dynamisch mit Perl-Code zusammengefügt werden, wobei wesentliche Teile des JS-Codes nur als ( dynamisch ...) Perl-Strings).

Der Web Inspector in Chrome verfügt nicht über eine mir bekannte Option zum Protokollieren einer Ausführungsablaufverfolgung. Grundsätzlich möchte ich ein Protokoll jeder Zeile von JS, die ausgeführt wird, in der Reihenfolge, in der sie ausgeführt werden. Ich halte dies nicht für eine schwierige Sache, da die JS-VM ein Singlethread ist. Das Problem ist einfach, dass die vorhandenen benutzerbezogenen Tools nicht für so viel Hardcore-Debugging ausgelegt sind. Wenn wir uns den Profiler in den Entwicklertools ansehen, ist er eindeutig in der Lage, die Art von Instrumentierung zu verwenden, die ich benötige, aber er ist grundsätzlich dafür ausgelegtProfiling anstattVerfolgung.

Wie kann ich damit anfangen? Gibt es eine Möglichkeit, Chrome aus dem Quellcode zu erstellen, wo ich kann?

JIT in V8 ausschalten?Protokollieren Sie jeden einzelnen Javascript-Ausdruck, der von V8 ausgewertet wird, in einer Datei

Ich habe keine Erfahrung mit der Entwicklungsseite von Chrome. So kann z.B. links zu dev-builds / branches / versions / distros von chrome / chrom / canary (was ist der unterschied?) sind willkommen.

An diesem Punkt scheint es immer noch einfacher zu sein, den Browser mit leistungsfähigem js-Tracing zu instrumentieren, als die fehlerhafte App neu zu entwerfen. Die Architektur der Seite ist eine Katastrophe, aber die Funktionalität ist komplex und funktioniert fast vollständig. Ich muss nur das eine fehlende Stück finden.

Wenn bereits Tools dieser Art vorhanden sind, mit welchen anderen Schlüsselwörtern kann ich alternativ danach suchen? "Code Tracing" ist so ziemlich das einzige, was ich mir vorstellen kann.

Ich habe getestetdynaTrace, was ein glücklicher Zufall war, da unsere App IE unterstützt (in der Tat kam die Chrome-Unterstützung gerade aus der Beta), aber dies erzeugt keinen Text-Dump, sondern im Grunde einmassiv Win32 UI-Erweiterungsbaum, der unmöglich zu unterscheiden ist. Das macht mich echt traurig, weil ichkennt Wie viel schwieriger war es, die Darstellung der Spur so erscheinen zu lassen, und dennoch stellte sich heraus, dass sie fast völlig unbrauchbar war. Wer wird in dieser Baumansicht nach oben und unten scrollen und irgendetwas wirklich Nützliches darin sehen, außer in einem Spielzeugbeispiel für eine Web-App?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage