Version: 2023.1
言語: 日本語
Unity で C# コードをデバッグする
ユニットテスト

スタックトレースのログ

Unity コンソールのメッセージとログファイルには、詳細なスタックトレース情報を加えることができます。また、コンソールは、メッセージを生成したコードの行にリンクしています。これは、ログエントリーの原因となった行、メソッド、または一連の関数呼び出しを特定したい場合に便利です。

ヒント: コードを検査するもう一つの方法は、デバッガー をエディターまたはビルドしたプレイヤーに設定することです。

マネージコードとアンマネージコードのスタックトレース

Unity は、マネージコードとアンマネージコード両方のスタックトレース情報を提供します。

  • マネージコード: Unity で動作するマネージド DLL または C# スクリプトです。Unity に同梱されているスクリプト、独自に書いたカスタムスクリプト、アセットストアプラグインに含まれるサードパーティスクリプト、その他エンジン内で実行される C# スクリプトが該当します。

  • アンマネージコード: ネイティブの Unity エンジンコード、またはマシン上やターゲットビルドプラットフォーム上で直接実行されるネイティブプラグインのコードを意味します。アンマネージコードは通常、C または C++ コードからコンパイルされます。ネイティブバイナリのオリジナルのソースコードを持っている場合のみ、アクセスすることができます。 通常、アンマネージコードのスタックトレースは、エラーの原因が自分のコードかエンジンコードか、またエンジンコードのどの部分にあるかを判断する必要がある場合にのみ使用します。

Unity には 3 つのスタックトレースオプションがあります。

  • None: Unity はスタックトレース情報を出力しません。
  • ScriptOnly: Unity はマネージコードのみのスタックトレース情報を出力します。これはデフォルトオプションです。
  • Full: Unity はマネージとアンマネージ、両方のコードのスタックトレース情報を出力します。

スタックトレースリソース要件

ノート: スタックトレース、特に、完全なスタックトレースの解決は、リソース負担の高い操作です。以下は効率のよいスタックトレースの実施方法の一部です。

  • スタックトレースをデバッグにのみ使用します。スタックトレースを有効にしてアプリケーションをユーザーにデプロイしないでください。
  • スタックトレースを表示するメッセージの種類を限定します。例えば、例外や警告に対してのみスタックトレースを使用することを検討するなど。

スタックトレースタイプの設定

ノート: スタックトレースオプションはビルド設定であり、ビルドされたプレイヤーに影響します。これはエディターでの表示設定ではありません。

スタックトレースに含む詳細な情報を指定するには、スクリプトAPIまたはエディタを使用します。

  • スクリプト API でスタックトレースのログを制御するには、Application.SetStackTraceLogType を使用します。 この API を使用して、ビルド前または実行中のプレイヤーのスタックトレース設定を変更することができます。

  • コンソールを使用するには、コンソールのメニューボタンを選択してから、以下を行います。
    • すべてのコンソールメッセージタイプに同じスタックトレースオプションを選択するには、Stack Trace Logging > All を選択します。
    • コンソールメッセージタイプの 1 つだけにスタックトレースオプションを選択するには、Stack Trace Logging > [メッセージタイプ] を選択します。 新しい設定でプレイヤーを再構築します。
  • Player 設定ウィンドウを使用するには、File > Build Settings > Player Settings > Other Settings を選択します。 新しい設定でプレイヤーを再構築します。

コンソールからスタックトレースのログのオプションを指定します。この例では、オプションで Exception を選択した場合を表示しています。
コンソールからスタックトレースのログのオプションを指定します。この例では、オプションで Exception を選択した場合を表示しています。

スタックトレース出力からソースファイルを開く

メッセージの全文には、コードファイル内の特定の行へのリンクが含まれています。任意のリンクをクリックすると統合開発環境 (IDE) で参照されているファイルを開きます。

ビルドしたアプリケーションの出力ログファイルを検索する

ビルドされたアプリケーションは、コンソールに出力されません。スタックトレースを見るには、アプリケーションのログファイル を使用します。

Unity で C# コードをデバッグする
ユニットテスト