Version: 2023.1
言語: 日本語
C#コードのデバッグ
WinRT API in C# scripts for UWP

生成された C++ コードのデバッグ

ユニバーサル Windows プラットフォーム (UWP) アプリケーション用に生成された C++ コードは、Visual Studio を使用してデバッグできます。

生成された C++ コードにおけるクラスとメソッドの命名

IL2CPP のクラス

IL2CPP のクラスは、<ClassName>_t#number という形式になります。

  • <ClassName> はクラス名です。
  • 任意の #number は一意の型番です。

IL2CPP クラスの例:

IL2CPP のメソッド

IL2CPP のメソッドは、<ClassName>_<MethodName>_m#number という形式になります。

  • <ClassName> は、メソッドの、宣言型のクラス名です。
  • <MethodName> はメソッド名です。
  • #number は一意のメソッド番号です。

IL2CPP のメソッドの例:

IL2CPP の static フィールドの構造体

static フィールドの構造体は <ClassName>_t#number_StaticFields という形式になります。構造体名の最初の部分は宣言型と同じです。

static フィールドの構造体の例:

  • StringBuilder_t26_StaticFields
  • Thing_t24_StaticFields

C++ のコメント

C++ は、それぞれのクラスやメソッドの定義の前に、完全なクラス名あるいはメソッド名を記したコメントを生成します。

C++ のコメントの例:

    // System.Text.StringBuilder
        struct StringBuilder_t26  : public Object_t
        {
            // System.Int32 System.Text.StringBuilder::_length
            int32_t length_1;
            // System.Int32 System.Text.StringBuilder::_maxCapacity
            int32_t maxCapacity_2;
        };

変数の値の監視

生成された C++ コードのデバッグは、Visual Studioのデバッガーを使用して 変数の値を監視することで行えます。

デバッガーを中断させたい場所に Visual Studio でブレークポイントを設定する ことで、変数を監視できます。Visual Studio では、変数の上にマウスポインターを移動するか ウォッチウィンドウを使用する ことで、変数の監視が行えます。

static フィールドの監視

IL2CPP では、Unity は static フィールドを Il2CppClass インスタンスに格納します。static フィールドの値を監視するには、以下を行う必要があります。

  1. その型の Il2CppClass 構造体への ポインター をコードの中で見つけてください。
    ノート: これらのポインターは、それを使用するメソッドのスコープ内にありますが、一度観測した後は、アプリケーションの実行中は同じメモリアドレスに残ります。
  2. このポインターから static_fields フィールドの値を取得します。これは、その特定の型の static フィールドを含むメモリブロックへのポインターです。
  3. この値を、対応する static フィールド構造体にキャストします。
  4. Visual Studio デバッガー の値を監視します。

例外の調査

IL2CPP は、ネイティブ C++ の例外を使用して .NET の例外を実装します。

コード内の例外の調査は、以下の方法で行えます。

その他の参考資料

C#コードのデバッグ
WinRT API in C# scripts for UWP