Unity 6.3
0 онлайн 3 гостей 3 в системе
Вход

Отладка генерирует код C++

Вы можете отладывать сгенерированный код C++ для приложения Universal Windows Platform (UWP) с помощью Visual Studio.

Именование классов и методов в сформированном коде C++

Классы IL2CPP

Классы IL2CPP следуют формату <ClassName>_t#number, где:

  • <ClassName> — это имя класса
  • Необязательное #number является уникальным номером типа

Пример классов IL2CPP:

  • String_t - класс String
  • Object_t — Класс объекта
  • Type_t — Класс типа
  • StringBuilder_t26 - класс StringBuilder

Методы IL2CPP

Методы IL2CPP следуют формату <ClassName>_<MethodName>_m#number, где:

  • <ClassName> — это имя класса, в котором объявлен метод
  • <MethodName> — имя метода
  • #number — уникальный номер метода

Пример методов IL2CPP:

  • ConfigurationSection_DoDeserializeSection_m1275 — DeserializationSection метод класса ConfigurationSection
  • String_Format_m4102 — Метод форматирования класса String
  • Mathf_Sqrt_m289 — Метод квадратов класса Mathf

Структуры статических полей IL2CPP

Структуры статических полей следуют формату <ClassName>_t#number_StaticFields, где первая часть имени структуры совпадает с объявляющим типом.

Примеры структур со статическими полями:

  • 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 позволяет вам наблюдать за значениями ваших переменных либо путем перемещения мыши над переменной, либо с помощью окна наблюдения.

Наблюдение за статическим полем

В IL2CPP статические поля хранятся в экземпляре Il2CppClass. Чтобы посмотреть значения статического поля, нужно:

  1. Найти указатель к Генеральной Ассамблее Il2CppClass структуру этого типа в вашем коде.
    Примечание: Эти указатели находятся в сфере действия методов, которые их используют, но после одного наблюдения они останутся на том же адресе памяти во время запуска приложения.
  2. Получить значение static_fields поле по этому указателю. Это указатель на блок памяти со статическими полями данного типа.
  3. Приводит значение к соответствующей структуре статического поля.
  4. Наблюдайте значение в отладчика Visual Studio.

Исследование исключений

IL2CPP использует собственные исключения C++ для реализации исключений .NET.

Чтобы изучить исключения в коде, можно:

  • Проверка объектов исключений в окно часы
  • Разрешить отладчику нарушать при исключениях C++

Дополнительные ресурсы