Отладка генерирует код C++
Вы можете отладывать сгенерированный код C++ для приложения Universal Windows Platform (UWP) с помощью Visual Studio.
Именование классов и методов в сформированном коде C++
Классы IL2CPP
Классы IL2CPP следуют формату <ClassName>_t#number, где:
-
<ClassName>— это имя класса - Необязательное
#numberявляется уникальным номером типа
Пример классов IL2CPP:
String_t- класс StringObject_t— Класс объектаType_t— Класс типаStringBuilder_t26- класс StringBuilder
Методы IL2CPP
Методы IL2CPP следуют формату <ClassName>_<MethodName>_m#number, где:
-
<ClassName>— это имя класса, в котором объявлен метод <MethodName>— имя метода#number— уникальный номер метода
Пример методов IL2CPP:
ConfigurationSection_DoDeserializeSection_m1275— DeserializationSection метод класса ConfigurationSectionString_Format_m4102— Метод форматирования класса StringMathf_Sqrt_m289— Метод квадратов класса Mathf
Структуры статических полей IL2CPP
Структуры статических полей следуют формату <ClassName>_t#number_StaticFields, где первая часть имени структуры совпадает с объявляющим типом.
Примеры структур со статическими полями:
StringBuilder_t26_StaticFieldsThing_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. Чтобы посмотреть значения статического поля, нужно:
- Найти указатель к Генеральной Ассамблее Il2CppClass структуру этого типа в вашем коде.
Примечание: Эти указатели находятся в сфере действия методов, которые их используют, но после одного наблюдения они останутся на том же адресе памяти во время запуска приложения. - Получить значение
static_fieldsполе по этому указателю. Это указатель на блок памяти со статическими полями данного типа. - Приводит значение к соответствующей структуре статического поля.
- Наблюдайте значение в отладчика Visual Studio.
Исследование исключений
IL2CPP использует собственные исключения C++ для реализации исключений .NET.
Чтобы изучить исключения в коде, можно:
- Проверка объектов исключений в окно часы
- Разрешить отладчику нарушать при исключениях C++
Дополнительные ресурсы
- Документация Microsoft о том, как отладывать код C++ с помощью Visual Studio
- Документация Майкрософта по Unity отладке с Visual Studio
- IL2CPP обзор
- IL2CPP Скриптовый бэкэнд для UWP