Das Problem beim Erkennen von Stapelüberläufen besteht darin, dass sich die Stapelverfolgung manchmal abwickelt und Sie nicht sehen können, was tatsächlich vor sich geht.
Ich habe einige der neueren Debugging-Tools von Chrome dafür nützlich gefunden.
Klicken Sie auf Performance tab
, stellen Sie sicher, dass Javascript samples
aktiviert ist, und Sie erhalten so etwas.
Es ist ziemlich offensichtlich, wo der Überlauf hier ist! Wenn Sie auf klicken extendObject
, wird die genaue Zeilennummer im Code angezeigt.
Sie können auch Timings sehen, die hilfreich sein können oder nicht, oder einen roten Hering.
Ein weiterer nützlicher Trick, wenn Sie das Problem nicht finden können, besteht darin, viele console.log
Aussagen dort zu platzieren, wo Sie glauben, dass das Problem liegt. Der vorherige Schritt oben kann Ihnen dabei helfen.
Wenn Sie in Chrome wiederholt identische Daten ausgeben, werden diese wie folgt angezeigt, um zu zeigen, wo das Problem deutlicher liegt. In diesem Fall traf der Stapel 7152 Frames, bevor er schließlich abstürzte:
data
in Ajax durch zu senden . Der Fehler wurde durch Deklarieren der Variablen behoben.