Unity veröffentlichte am 20. Mai 2015 einen technischen Beitrag zum Debugging von C++-Code, den IL2CPP aus .NET Intermediate Language erzeugt. Die Anleitung zeigt anhand eines iOS-Projekts, wie sich Fehler im generierten Code mit Xcode untersuchen lassen.
Für das Beispiel nutzte Unity 5.0.1p3 unter OS X und die Option Development Player. Dadurch behält der erzeugte C++-Code die Namen von Typen und Methoden aus dem IL-Code. Das erleichtert die Suche nach einer Methode wie HelloWorld_Start_m3 im Xcode-Projekt.
Haltepunkte im generierten C++
Breakpoints lassen sich direkt in Methoden oder an bestimmten Zeilen der generierten Dateien setzen. Unity legt diese Dateien im Verzeichnis Classes/Native des Xcode-Projekts ab. Für Fehler in verwaltetem Code verweist der Beitrag außerdem auf il2cpp_codegen_raise_exception und auf einen C++-Exception-Breakpoint für Il2CppExceptionWrapper.
Strings liegen in IL2CPP als UTF-16-Datenstrukturen vor. Über il2cpp::utils::StringUtils::Utf16ToUtf8 kann der Inhalt im LLDB-Prompt sichtbar gemacht werden. Bei einer NullReferenceException führt der Call Stack anschließend von der Laufzeitfunktion zurück zur eingefügten NullCheck-Prüfung. Die vorherige IL2CPP-Erklärung beschreibt die Architektur aus AOT-Compiler und Laufzeitbibliothek.
Managed-Code-Debugger noch nicht veröffentlicht
Unity kündigte außerdem einen internen, noch nicht veröffentlichungsreifen Debugger für verwalteten Code an. Der nächste Beitrag der Serie sollte sich mit den Laufzeitkosten verschiedener Methodenaufrufe befassen.
