Skip to Content
新しいバージョン 12 を公開しました 🎉
Desktopスタックデコーダー

スタックデコーダー

難読化されたアプリケーションのスタックトレースには、難読化された名前が表示されます。スタックデコーダーは、難読化で生成された XML マップファイルを使って、それらを元の名前に戻します。スタックトレースをデコードしたいアセンブリでは、マップファイルの生成(「Output & diagnostics」グループの GenerateMapOutFile)を有効にしておいてください。

スタックデコーダーを開く

アクティビティバーのスタックデコーダーのアイコンをクリックするか、Ctrl+Shift+D(macOS では Cmd+Shift+D)を押すか、「ツール: スタック デコーダー」を実行します。

マップファイルを追加する

「マップ ファイルを追加…」をクリックして 1 つ以上のマップファイルを選択するか、マップファイルをパネルにドラッグします。マップファイルをパスワード付きで生成した場合は、「マップ ファイルのパスワード」にそのパスワードを入力します。

トレースを貼り付ける

難読化されたスタックトレースを「難読化されたトレース」に貼り付けるか、「トレースを開く…」でファイルから読み込みます。

デコードする

「デコード」をクリックします。結果は「デコードされたトレース」に表示されます。「デコードしたトレースを保存…」で、結果をファイルに書き出せます。

マップファイル Lumenbyte.Inventory.dll.map.xml を読み込んだスタックデコーダー。「Map password」とフレームを非表示にするオプション、d.b や a.Main などのフレームを含む難読化されたトレース、InMemoryStockRepository.Adjust と Program.Main という名前を示すデコード済みのトレースが表示されています

マップファイルを使ったスタックトレースのデコード

「Babel が追加したフレームを非表示」は、動的プロキシが生成するブリッジフレームを取り除き、自分のコードの呼び出しチェーンだけを残します。すべてのフレームを残すには、チェックボックスをオフにします。その場合、各プロキシフレームには、それが代理しているメソッドのラベルが付きます。

  • オーバーロードリネームが有効な場合、複数のメソッドが 1 つの難読化された名前を共有することがあります。その場合、デコーダーは難読化されたフレームの下に、一致する可能性のある元のメソッドをすべて一覧表示します。一意に対応付ける必要がある場合は、オーバーロードリネームを無効にしてください。
  • Unicode リネームを使用すると、難読化された名前に印刷できない文字が含まれます。文字が失われないように、難読化されたトレースを UTF-8 のテキストファイルに保存し、「トレースを開く…」で読み込んでください。
  • PDB ファイル名を暗号化してアプリケーションを難読化した場合、デコードされたトレースには元のソースファイル名が表示されます。PDB ファイルの使用を参照してください。

XML マップファイルからは、コードの元の名前がわかります。安全な場所に保管し、決してアプリケーションと一緒に配布しないでください。

コマンドラインや自動化されたパイプラインでデコードする方法については、スタックトレースのデコードを参照してください。Babel Licensing Service が収集した例外レポートに含まれるスタックトレースは、「レポート」ビューでデコードできます。

Last updated on