Pelacakan tumpukan pengecualian Javascript

89

Di Firefox saya bisa mendapatkan jejak tumpukan pengecualian dengan menggunakan exception.stack.

Apakah ada cara untuk mendapatkannya juga di browser lain?

Sunting: Saya sebenarnya ingin menyimpan jejak tumpukan secara otomatis (jika mungkin) dan tidak men-debugnya pada saat itu (yaitu, saya tahu cara mendapatkan jejak tumpukan dalam debugger).

ujh
sumber

Jawaban:

74

Letakkan baris ini di tempat Anda ingin mencetak jejak tumpukan:

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

Catatan: diuji oleh saya di Chrome 24 dan Firefox 18

Mungkin ada baiknya untuk melihat alat ini juga.

Francesco Casula
sumber
2
Manis - Saya menggunakan kombinasi onerror untuk mendapatkan nomor baris dan kemudian membungkus baris yang melanggar dengan mencoba menangkap dan saran Anda untuk mengingatkan stacktrace kembali ke pengguna. `window.onerror = function (message, url, lineNumber) {alert ('message:' + message + '- url:' + url + '- ln:' + lineNumber); kembali benar; }; `Kemudian bungkus untuk mencetak stacktrace. `coba {// Beberapa kode yang menyebabkan pengecualian. } catch (e) {alert (new Error (). stack); } ``
Philip Murphy
entah bagaimana mati hanya memberi saya baris pertama dari tumpukan. Apa yang saya lakukan salah ?? yaitu: function foo () {fdasmkl} coba {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7bukannya"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui
lupakan, temukan masalahnya. Karena itu sudah merupakan kesalahan, saya dapat melakukan: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }segera
chitzui
23

Webkit sekarang memiliki fungsionalitas yang menyediakan pelacakan tumpukan:

Web Inspector: Understanding Stack Traces , diposting oleh Yury Semikhatsky pada Rabu, 20 April 2011 pukul 7:32 pagi (webkit.org)

Dari postingan itu:

Brian M. Hunt
sumber
1
Jauh lebih nyaman daripada membuat pengecualian hanya untuk melihat tumpukannya.
Alex Churchill
Tautan rusak, tapi saya pikir ada salinannya di sini pjh0718.blogspot.com/2016/02/…
Stephen Turner
2

Jika Anda menginginkan pelacakan tumpukan string, saya akan menggunakan jawaban insin: stacktrace.js . Jika Anda ingin mengakses potongan stacktrace (nomor baris, nama file, dll) stackinfo , yang sebenarnya menggunakan stacktrace.js di bawah tenda.

BT
sumber
0

Tidak juga, setidaknya tidak mudah.

Di IE, Anda dapat men-debug proses browser dengan MS Script Debugger (yang karena alasan tertentu merupakan komponen Office) atau Visual Studio, dan kemudian Anda dapat melihat tumpukan di breakpoint.

levik
sumber
0

Anda harus mencoba pustaka sumber terbuka TraceKit yang baik yang mencoba membuat pelacakan tumpukan untuk pengecualian JavaScript yang tidak tertangani di semua browser utama. Anda dapat membaca lebih lanjut tentang Tracekit

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

PS : Jika Anda mencari layanan (menggunakan Tracekit) dengan UI yang bagus, Anda dapat mencoba Atatus

Fizer Khan
sumber