Ablaufverfolgung für Javascript-Ausnahmestapel

89

In Firefox kann ich mithilfe von die Stapelverfolgung einer Ausnahme abrufen exception.stack.

Gibt es eine Möglichkeit, dies auch in anderen Browsern zu erreichen?

Bearbeiten: Ich möchte den Stack-Trace tatsächlich automatisch speichern (wenn möglich) und zu diesem Zeitpunkt nicht debuggen (dh ich weiß, wie der Stack-Trace in einem Debugger abgerufen wird).

ujh
quelle

Antworten:

73

Platzieren Sie diese Zeile an der Stelle, an der Sie die Stapelverfolgung drucken möchten:

console.log(new Error().stack);

Hinweis: Von mir auf Chrome 24 und getestet Firefox 18

Vielleicht lohnt sich ein Blick darauf dieses Tool .

Francesco Casula
quelle
2
Süß - Ich verwende eine Kombination aus einem Fehler, um die Zeilennummer zu erhalten, und umhülle dann die betreffende Zeile mit einem Try-Catch und Ihrem Vorschlag, den Stacktrace an den Benutzer zurückzugeben. `window.onerror = function (message, url, lineNumber) {alert ('message:' + message + '- url:' + url + '- ln:' + lineNumber); return true; }; `Wickeln Sie es dann ein, um die Stapelspur auszudrucken. `try {// Code, der die Ausnahme verursacht. } catch (e) {alert (neuer Fehler (). stack); } `
Philip Murphy
irgendwie stirbt gibt mir nur die erste Zeile des Stapels. Was mache ich falsch?? dh: Funktion foo () {fdasmkl} try {foo ()} catch (e) {err = neuer Fehler (e) .stack; console.log (err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7anstelle von"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui
egal, fand das Problem. Da es bereits ein Fehler war, kann ich tun: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }sofort
Chitzui
23

Webkit verfügt jetzt über Funktionen, die Stapelspuren bereitstellen:

Web Inspector: Stack Traces verstehen , veröffentlicht von Yury Semikhatsky am Mittwoch, den 20. April 2011 um 7:32 Uhr (webkit.org)

Aus diesem Beitrag:

Brian M. Hunt
quelle
1
Viel praktischer als das Erstellen einer Ausnahme, um nur den Stapel anzuzeigen.
Alex Churchill
Der Link ist defekt, aber ich denke, es gibt eine Kopie hier pjh0718.blogspot.com/2016/02/…
Stephen Turner
0

Nicht wirklich, zumindest nicht leicht.

Im IE können Sie den Browserprozess mit MS Script Debugger (aus irgendeinem Grund eine Office-Komponente) oder Visual Studio debuggen und dann den Stapel auf Haltepunkten anzeigen.

Levik
quelle
0

Sie müssen eine gute Open-Source-Bibliothek TraceKit ausprobieren die versucht, Stack-Traces für nicht behandelte JavaScript-Ausnahmen in allen gängigen Browsern zu erstellen. Sie können mehr über Tracekit lesen

https://github.com/csnover/TraceKit/

PS : Wenn Sie nach einem Dienst (mit Tracekit) mit guter Benutzeroberfläche suchen, können Sie Atatus ausprobieren

Fizer Khan
quelle