2012-04-05 6 views
19

Ich habe eine ziemlich komplexe Javascript-Anwendung (es verwendet keine externen Frameworks), die Benutzer gerade testen (ein paar tausend Zeilen). Ich habe Berichte erhalten, dass Benutzer das Popup in Google Chrome erhalten, das besagt:Wie Debuggen nicht reagierender Seite in Google Chrome?

Die folgende Seite (n) reagiert nicht mehr. Sie können darauf warten, dass sie reagieren reagieren oder sie töten.

Sie berichten, dass die einzige Möglichkeit, mit der App zu halten, ist eine neue Chrome-Fenster zu öffnen, aber dass die Nachrichten wieder aufgebaut wird alle paar Minuten, und geschieht nur, wenn sie versuchen, auf eine neue Seite zu gehen. Sie sagten ausdrücklich, dass sie klicken, um zu einer neuen Seite zu gehen, und die aktuelle Seite ändert sich nie, sie sehen nur das sich drehende Ladesymbol für eine Minute, bis das Popup-Zeichen erscheint.

Die seltsame Sache ist, dass ich ausführlich über die genaue Version von Chrome (18) getestet habe, mit der diese Benutzer Probleme haben, und ich habe keine Probleme gesehen. Ich bin irgendwie ratlos und weiß nicht, wo ich jetzt hinschauen soll, da ich es nicht kopieren konnte, irgendwelche Ideen darüber, wo ich als nächstes nachsehen sollte, zumindest versuchen, herauszufinden, was diesen Fehler überhaupt verursachen könnte?

+6

Versuchen Sie, SpeedTracer für Chrome auszuführen, um ein Profil lang andauernder Prozesse zu erhalten, und untersuchen Sie diese dann auf Speicherlecks, starke Berechnungen usw. https://developers.google.com/web-toolkit/speedtracer/ – Mathletics

+1

One Sie könnten versuchen, einen Heap-Snapshot zu machen, um zu sehen, ob es ein Objekt gibt, das immer mehr Speicher verbraucht.Versuchen Sie außerdem herauszufinden, welche Teile Ihres Codes mehr Rechenzeit benötigen, und kommentieren Sie sie oder verwenden Sie setTimeout, bis Sie den genauen Ort des Problems finden. – NicoSantangelo

+0

Irgendeine Idee, warum keiner davon alle gleich beeinflussen würde Weg? –

Antwort

12

Verwenden Sie den Chrom Javascript Debugger zu unterbrechen (unterbricht laufenden Code) während der Nichtansprechbarkeit. Es braucht etwas Zeit, aber es sollte in der Mitte von allem brechen, was zu lange läuft. Sie können dann die Debugger-Steuerelemente verwenden, um herumzulaufen und zu sehen, was unnötigerweise eine Schleife bildet.

+0

Aber das Problem ist, dass ich nicht in der Lage bin, dies zu reproduzieren, und ich bin nicht sicher, warum das sein würde. Seit ich diese Frage gepostet habe, habe ich mehrere weitere Berichte über dieselbe Sache erhalten, und das passiert nur Chrome-Nutzern. –

+0

verwenden Sie * onbeforeunload * überhaupt? –

+0

Nein, ich benutze das nirgends. –

10

Ich weiß, dass dies eine alte Frage, aber ich hatte dieses Problem auch, und meine beste Empfehlung an Sie ist die folgende:

Schließen Chrome vollständig und fügen Sie dann „--enable-Logging“ auf Ihre Chrom Abkürzung Um es mit diesem Flag zu starten, können Sie sogar "--enable-logging --v = 1" hinzufügen, um die ausführliche Protokollierung zu aktivieren.

Ich weiß mit mir, das Einfügen eines Haltepunkts war keine Option, weil es in einer neuen Registerkarte war, die abgestürzt ist, bevor ich die Konsole sogar bekommen konnte. Durch Aktivieren der Protokollierung wird die Konsole jedoch in eine Datei in Ihrem Chromendatenverzeichnis geschrieben ("C: \ Benutzer \ Benutzername \ AppData \ Local \ Google \ Chrome \ Benutzerdaten")

Ich hoffe, dass dies jemandem irgendwann hilft es hat mich getan! : D

2

Ich hatte heute eine Seite, die Buggy JS (Endlosschleife) hatte und ich konnte die Dev-Tools nicht über Tastaturkürzel oder Rechtsklick (Chrome 60.0.3112.113) öffnen. Konnte daran vorbei durch:

  1. Neue Registerkarte öffnen
  2. öffnen dev Tools (auf leeren Tab)
  3. URL eingeben und Last
  4. Pause JS Ausführung in dev Tools

Vielleicht wird das jemandem helfen! Auch der chrome-Debugger hält Haltepunkte über die Browser-Tabs hinweg (für dasselbe JS). Wenn ich also nicht genau feststellen konnte, was den Fehler verursacht hat, sind meine Haltepunkte immer noch in einem neuen Tab vorhanden!

Verwandte Themen