IL2CPP マネージスタックトレース
IL2CPP コンパイラー設定を構成し、デバッグを容易にするために、より情報量の多いマネージスタックトレースを生成します。
読み終わるまでの所要時間 8 分最終更新 3日前
マネージコードで例外が発生した場合、例外のスタックトレースは例外の原因を理解するのに役立ちます。ただし、マネージスタックトレースが期待通りに表示されない場合があります。スタックトレースはビルド設定によって異なります。
C++ コンパイラー設定
IL2CPP ビルドの C++ コンパイラー設定は、以下のいずれかの方法で設定できます。
-
エディターのメニューから。プレイヤー設定メニューからスクリプトバックエンドを変更するには、以下の手順を実行します。プレイヤー設定
?
-
コードから、enum からの値で
Il2CppCompilerConfigurationを呼び出す。PlayerSettings.SetIl2CppCompilerConfiguration
この設定は、マネージスタックトレースに以下の影響を与えます。
- --debugIL2CPP は、信頼性の高いマネージスタックトレースを報告し、コールスタックに各マネージメソッドを含めます。スタックトレースには、元の Cソースコードの行番号は含まれません。
- リリースまたはマスター:IL2CPP によって、1 つ以上のマネージメソッドがないコールスタックが生成される場合があります。これは、C++ コンパイラーが欠落しているメソッドをインライン化するときに発生します。メソッドインライン化は通常、ランタイムパフォーマンスを向上させますが、コールスタックの理解をより難しくする場合があります。
IL2CPP は常に、コールスタックに少なくとも 1 つのマネージメソッドを提供します。マネージ例外から作成されたスタックトレースの場合は、例外が発生したメソッドです。インライン化されていない場合は、他のメソッドも含まれます。
IL2CPP スタックトレース情報
マネージスタックトレースにインクルードファイルと行番号の情報を含めるように IL2CPP を設定するには、以下のいずれかの方法を使用します。
- エディターのプレイヤー設定:編集> プロジェクト設定> プレイヤー> その他の設定。次に、設定の見出しで、「 IL2CPP スタックトレース情報 」プロパティーを「 **メソッド名、**ファイル名、行番号 」設定に設定します。
- コードから、パラメーター値としてを使用して
Il2CppStacktraceInformation.MethodFileLineNumberを呼び出します。PlayerSettings.Il2CppStacktraceInformation

The IL2CPP Stacktrace Information property, set to Method Name, File Name, and Line Number
この設定は、IL2CPP にすべてのマネージスタックフレームをコールスタックに含めるよう指示します。各スタックフレームには、マネージシンボルファイル (.pdb) が、そのコードが存在するマネージアセンブリ (.dll) で使用可能である限り、適切な C# 行番号も含まれます。
この特徴を有効にすると、ビルド時間とビルドされたプログラムの最終的なサイズの両方がわずかに増加します。プレイヤーのビルドプロセスには、デバッグシンボルファイルを処理し、必要なシンボルの形成を含む新しいデータファイルを生成する追加ステップが含まれます。Unity はこのデータファイルをビルドしたプレイヤーに同梱し、ランタイムに使用してコールスタックの C# 行情報を判別します。
この機能を有効にすると、Unity はメソッドのインライン化がアクティブな場合でも、リリース設定またはマスター設定のいずれかで正しいコールスタックを生成します。
スクリプトのデバッグ
スクリプトデバッグを有効にするには、ファイル>ビルドプロファイルに移動し、スクリプトデバッグチェックボックスを有効にします。スクリプトデバッグを有効にすると、IL2CPP はメソッド、ファイル、および行番号とともに正しいマネージスタックトレースを報告します。これは、プログラムサイズが大きくなり、パフォーマンスが低下することを犠牲にします。