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).

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 .


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



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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.