JavaScript例外スタックトレース


89

Firefoxでは、を使用して例外のスタックトレースを取得できますexception.stack

他のブラウザでもそれを取得する方法はありますか?

編集:実際にはスタックトレースを自動的に保存し(可能な場合)、その時点ではデバッグしないでください(つまり、デバッガーでスタックトレースを取得する方法を知っています)。

回答:


73

スタックトレースを印刷する場所に次の行を配置します。

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

注:Chrome 24およびFirefox 18で私がテストしました

このツールも一見の価値があります。


2
甘い-私はonerrorの組み合わせを使用して行番号を取得し、問題のある行をtry catchでラップして、スタックトレースをユーザーに警告する提案をしています。`window.onerror = function(message、url、lineNumber){alert( 'message:' + message + '-url:' + url + '-ln:' + lineNumber); trueを返します。}; `次にラップしてスタックトレースを出力します。`try {//例外を引き起こしているいくつかのコード。} catch(e){alert(new Error()。stack); } `
フィリップマーフィー

どういうわけか死ぬと私はスタックの最初の行を与えるだけです。何が悪いのですか?ie: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の代わり"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

気にしないで、問題を見つけました。それはすでにエラーだったので、私は次のことができます:function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }即時
chitzui

23

Webkitにスタックトレースを提供する機能が追加されました。

ウェブインスペクター:スタックトレースの理解、Yury Semikhatskyが2011年4月20日水曜日午前7時32分(webkit.org)に投稿

その投稿から:


1
スタックを表示するためだけに例外を作成するよりもはるかに便利です。
アレックスチャーチル

ここでのコピーのリンクが壊れているが、私はそこにあると思いpjh0718.blogspot.com/2016/02/...
スティーブン・ターナー

2

文字列スタックトレースが必要な場合は、insinの回答であるstacktrace.jsを使用します。あなたは、スタックトレースの部分(行番号、ファイル名など)にアクセスしたい場合はstackinfo実際にボンネットの下にstacktrace.jsを使用しています、。


0

実際には、少なくとも簡単にはできません。

IEでは、MS Script Debugger(なんらかの理由でOfficeコンポーネントです)またはVisual Studioを使用してブラウザープロセスをデバッグし、ブレークポイントでスタックを確認できます。


0

すべての主要なブラウザーで未処理のJavaScript例外のスタックトレースを作成しようとする、優れたオープンソースライブラリのTraceKitを試す必要があります。あなたはTracekitについてもっと読むことができます

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

PS:優れたUIを備えたサービス(Tracekitを使用)を探している場合は、Atatusを試すことができます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.