マネージコードで例外が発生する場合、例外の原因を理解するには例外のスタックトレースが役立ちます。ただし、iOS の一部の状況ではマネージスタックトレースが予期した通りに表示されない場合があります。スタックトレースは Xcode のビルド設定によっても異なります。
iOS でデバッグビルド設定を使用する場合、IL2CPP は信頼できるマネージスタックトレースを報告し、各マネージメソッドをコールスタックに包含します。スタックトレースには、元の C# ソースコードの行番号は含まれません。
リリースビルド設定を使用する場合、IL2CPP がマネージメソッドが欠けているコールスタックを生成することがあります。これは、C ++ コンパイラーが欠落しているメソッドをインライン展開しているためです。メソッドのインライン展開は、通常、ランタイムのパフォーマンスには優れていますが、コールスタックを理解しにくくする場合があります。IL2CPP は、常にコールスタック上に少なくとも 1 つのマネージメソッドを提供します。これが、例外が発生するメソッドです。他のメソッドがインライン展開されていない場合は、それらも含まれます。
例外をローカルで再現できる場合は、Xcode を使用してインライン展開されているメソッドを探します。リリース設定を使用して Xcode でアプリケーションを実行し、例外ブレークポイントを設定します。Xcode のネイティブコールスタックビューは、どのメソッドが実際に存在し、どのメソッドがインライン展開されているかを示します。
IL2CPP コールスタックには、デバッグ設定またはリリース設定のソースコード行番号の情報は、デフォルトでは含まれていません。ソースコードの行番号を有効にするには、以下の手順に従います。
ノート: このオプションを使用すると、ビルド時間とビルドされたプログラムの最終的なサイズの両方が増加する可能性があります。