スタックトレースフォーマッター&パーサー
ガイド
スタックトレースフォーマッター&パーサー
JavaScript、Python、Java、Ruby、Go、.NET、またはPHPからrawスタックトレースを貼り付けて、色分けされた、フレームごとの分解を即座に取得できます。このツールは言語を自動検出し、コードとフレームノイズを分離し、クリーンなマーカードブロックを生成して、バグレポートやプルリクエストに直接貼り付けることができます。
使用方法
- rawスタックトレースを入力エリアに貼り付け、または言語例のいずれかをクリックしてフォーマッターの動作を確認できます。
- 言語を保持する 自動検出、または形式が異常または切り詰められている場合、手動で選択します。
- トグル フレーム/ベンダーフレームを収縮 長く続くライブラリコードを1つの展開可能なブロックに折りたたむため。
- プレビューするには ユーザーコードフレームを強調表示 自分のファイルがトレースの他の部分から飛び出るようにするため。
- Markdown出力の隣のコピーボタンをクリックして、GitHub、Slack、またはJiraにクリーンなコードブロックを貼り付けることができます。
機能
- 7つの言語がサポートされています – JavaScript / TypeScript、Python、Java / Kotlin、Ruby、Go、.NET (C#)、およびPHP。
- 自動言語検出 – パーサーはトレース内の特徴的なパターンを検査し、正しい文法を選択し、そのため手動で設定する必要がほとんどありません。
- ベンダーフレームの収縮 – node_modules、site-packages、Spring、gems、またはSystem.*フレームの長く続く行は、1クリックで展開可能な行に折りたたまれます。
- ユーザーコードの強調表示 – あなたのファイルは暖色のアクセントカラーで表示され、関連する行がノイズの中から隠れなくなるようにします。
- 例外要約 – 型とメッセージがヘッダーに抽出され、総数、ユーザー、およびベンダーフレーム数のバッジが表示されます。
- 原因連鎖 – Javaのネストされた原因やPythonの連鎖トレースは、別々のセクションとして表示されます。
- マーカードエクスポート – バグレポート、プルリクエスト、またはチャットツールに貼り付ける準備ができているフェンス付きコードブロックを生成します。
- 完全にクライアントサイド – 何らかのデータがブラウザから離れることはありません;プロダクションシステムからの内部スタックトレースでも安全に使用できます。
一般的な使用例
- プロダクションインシデントの整理 – 長いトレースを貼り付けて、どのあなたのファイルがチェーンのトップにあるかすぐに把握できます。
- より良いバグレポートを作成 – GitHub、GitLab、およびJiraできれいにレンダリングされるマーカード形式のトレースをエクスポートできます。
- チームメイトのエラーログを確認 – 3rdパーティフレームを収縮させ、話題が実際に所有するコードに集中できるようにします。
- デバッグを教える – ユーザー/ベンダーの色分けを使って、新しい開発者がトレースを下から上へ読む方法を示すことができます。
よくある質問
-
なぜスタックトレースを下から上に読むのですか?
多くの言語では、関数が互いに呼び出される際にスタックは下に成長し、実行環境は例外が発生したときの最も最近の呼び出しをトップに表示します。下から上に読むことで、時系列順序を得られます:最初にエントリポイント、次に各呼び出し、最後に失敗した行です。下を読むことは、JavaやPythonの連鎖トレースで見られる「原因」の文言に直接関係しています。これはしばしば実際の根本原因を含んでいます。
-
スタックトレースとクラッシュダンプの違いは何ですか?
スタックトレースは例外が発生したときにアクティブだった関数呼び出しのテキストリストです。クラッシュダンプは、致命的な障害が発生した瞬間のメモリ、レジスタ、スレッドのバイナリスナップショットであり、通常はオペレーティングシステムまたは実行環境によって生成されます。スタックトレースは安価でチャットで共有可能ですが、クラッシュダンプはデバッガーが必要で、多くの場合、センシティブなメモリコンテンツを含んでいます。
-
フレームまたはベンダーフレームとは何ですか?
ファイルパスまたは完全な名前がライブラリ、フレームワーク、実行環境、またはインストールされた依存関係に属しているフレームです。例として、node_modules、site-packages、vendor/、/usr/lib/、GOROOT、java.* / javax.*プレフィックス、および.NETにおけるSystem.* / Microsoft.*名前空間があります。これらはほとんどが探しているバグではありません。そのため、これらを収縮させることでトレースが読みやすくなります。
-
Pythonのトレースバックに「上記の例外の処理中に」の行があるのはなぜですか?
Pythonは例外連鎖を保持しています:1つの例外が別の例外が処理中に発生した場合、インタープリタは両方を表示します。「上記の例外の処理中に別の例外が発生した」というのは、暗黙的な連鎖を示し、「上記の例外が次の例外の直接原因である」というのは、'raise X from Y'で明示的に設定された連鎖を示します。これらは、後のエラーが前のエラーによって引き起こされたか、あるいは単に上に重なったかを確認するのに役立ちます。
-
Goにおけるパンクとは何ですか?そしてそれは例外とはどう異なりますか?
パンクはGoの未回復の実行時エラーのメカニズムで、例外に似ていますが、意図的に狭い範囲です。Goの慣用的な使い方では、期待される失敗モードは返されたエラー値を使用し、パンクは本当に予期しないプログラミングバグ(nilポインタ参照や範囲外のスライスアクセスなど)にのみ使用されます。パンクはgoroutineのスタックを走り、defer関数を実行し、最終的にプログラムをクラッシュさせます(recoverでキャッチされない場合を除く)。
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
