104 Stimmen

Javascript Ausnahme Stack Trace

In Firefox kann ich den Stack-Trace einer Ausnahme erhalten, indem ich exception.stack .

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

Editar: Ich möchte eigentlich den Stack-Trace automatisch speichern (wenn möglich) und nicht zu diesem Zeitpunkt debuggen (d.h. ich weiß, wie man den Stack-Trace in einem Debugger erhält).

91voto

Francesco Casula Punkte 24332

Platzieren Sie diese Zeile an der Stelle, an der Sie den Stack-Trace ausgeben möchten:

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

Anmerkung: von mir getestet am Chrom 24 y Firefox 18

Es lohnt sich, einen Blick darauf zu werfen dieses Werkzeug auch.

2 Stimmen

Super - ich verwende eine Kombination aus onerror, um die Zeilennummer zu ermitteln und dann die fehlerhafte Zeile mit einem Try-Catch zu umschließen, und Ihrem Vorschlag, den Stacktrace an den Benutzer weiterzuleiten. ` window.onerror = function(message, url, lineNumber) { alert('message: ' + message + ' - url: ' + url + ' - ln: ' + lineNumber); return true; }; ` Dann wrap it to print out the stacktrace. ` try { // Irgendein Code, der die Ausnahme verursacht. } catch(e) { alert(new Error().stack); } `

0 Stimmen

Irgendwie gibt mir dies nur die erste Zeile des Stapels. Was mache ich falsch?? d.h.: function foo() { fdasmkl } try { foo() } catch(e) { err = new Error(e).stack; console.log(err) } =>>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7 anstelle von "Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"

0 Stimmen

Vergessen Sie's, ich habe das Problem gefunden. Da es bereits ein Fehler war, kann ich tun: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) } sofort

24voto

Brian M. Hunt Punkte 75888

Webkit verfügt nun über Funktionen, die Stack Traces bereitstellen:

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

Aus diesem Beitrag:

1 Stimmen

Das ist viel bequemer, als eine Ausnahme zu erstellen, nur um ihren Stack zu sehen.

0 Stimmen

Der Link ist defekt, aber ich glaube, es gibt eine Kopie hier pjh0718.blogspot.com/2016/02/…

3voto

B T Punkte 51689

Wenn Sie den String-Stack-Trace wollen, würde ich die Antwort von insin übernehmen: stacktrace.js . Wenn Sie auf die Teile eines Stacktrace (Zeilennummern, Dateinamen usw.) zugreifen möchten Stackinfo die eigentlich stacktrace.js unter der Haube verwendet.

1voto

Fizer Khan Punkte 79079

Sie müssen eine gute Open-Source-Bibliothek ausprobieren TraceKit das versucht, Stack Traces für unbehandelte JavaScript-Ausnahmen in allen wichtigen Browsern zu erstellen. Sie können mehr über Tracekit lesen

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

PS : Wenn Sie auf der Suche nach einem Dienst (mit Tracekit) mit guter Benutzeroberfläche sind, können Sie versuchen Atatus .

[Offenlegung] Ich arbeite bei Atatus.

0 Stimmen

Wenn Sie auf Ihre eigene Website oder Inhalte (oder Inhalte, mit denen Sie verbunden sind) verlinken, müssen Sie muss Ihre Zugehörigkeit offenlegen in der Antwort damit sie nicht als Spam angesehen wird. Der gleiche Text in Ihrem Benutzernamen wie die URL oder die Erwähnung der URL in Ihrem Profil wird nach den Richtlinien von Stack Exchange nicht als ausreichende Offenlegung angesehen.

0voto

levik Punkte 108445

Nicht wirklich, zumindest nicht leicht.

In IE können Sie den Browserprozess mit MS Script Debugger (der aus irgendeinem Grund eine Office-Komponente ist) oder Visual Studio debuggen, und dann können Sie den Stack an Haltepunkten sehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X