Version: 2022.1
言語: 日本語
Windows ランタイムサポート
スクリプトの制限

IL2CPP によるマネージスタックトレース

マネージコードで例外が発生する場合、例外のスタックトレースは例外の原因を理解するのに役立ちます。ただし、ある状況ではマネージスタックトレースが想定通りに表示されない場合があります。以下にそれを説明します。スタックトレースはビルド構成によっても異なります。

C++ コンパイラー構成のオプション

デバッグ

デバッグビルド構成を使用する場合、IL2CPP は信頼できるマネージスタックトレースを報告し、各マネージメソッドをコールスタックに包含する必要があります。 スタックトレースには、元の C# ソースコードの行番号は含まれません。

リリース候補

リリースビルド構成を使用すると、IL2CPP は、1 つ以上のマネージメソッドが欠落しているコールスタックを生成する場合があります。これは、C++ コンパイラーが不足しているメソッドをインライン化したためです。メソッドのインライン化は通常、ランタイムのパフォーマンスには適していますが、呼び出しスタックを理解しにくくする可能性があります。IL2CPP は、常にコールスタックに少なくとも 1 つのマネージメソッドを提供します。これは、例外が発生するメソッドです。インライン化されていない場合は、他のメソッドも含まれます。

ソースコード行番号

To locate errors that the compiler finds in your code, you can configure the managed stack trace information to include the file name and line number in the managed stack traces. The managed stack trace information does not include this information by default, because it increases code size and causes the Unity Player to run more slowly.

Note: The option to include line numbers in the stack trace is only available on desktop platforms.

To configure the managed stack trace information to include the file name and line numbers:

  1. Go to Edit > Project Settings > Player > Other Settings.
  2. Set IL2CPP Stacktrace Information to Method Name, File Name, and Line Number.

Note: When the C++ Compiler Configuration is set to Release or Master, you might experience the following:

  • The compiler might inline some functions, which causes them not to appear in the stack trace.
  • The source code line numbers might not match up with the correct line numbers in your code.

Script Debugging enabled

To enable Script Debugging, go to File > Build Settings then click the checkbox next to Script Debugging. With Script Debugging enabled, IL2CPP will always report a correct managed stack trace with the method, file name, and line number. However, this increases the program size and produces slower code. Using script debugging solely to improve stack traces is not recommended. Instead, enable the option shown above.

Windows ランタイムサポート
スクリプトの制限