Version: 2023.1
언어: 한국어
C# 코드 디버깅
UWP용 C# 스크립트의 WinRT API

생성된 C++ 코드 디버깅

Visual Studio를 사용하여 UWP(유니버설 Windows 플랫폼) 애플리케이션용으로 생성된 C++ 코드를 디버깅할 수 있습니다.

생성된 C++ 코드의 클래스와 메서드 명명법 이해

IL2CPP 클래스

IL2CPP 클래스는 <ClassName>_t#number 포맷을 따릅니다.

  • <ClassName>는 클래스명입니다.
  • 선택 사항인 #number는 고유 타입 번호입니다.

예시 IL2CPP 클래스:

IL2CPP 메서드

IL2CPP 메서드는 <ClassName>_<MethodName>_m#number 포맷을 따릅니다.

  • <ClassName>은 메서드의 선언 타입 클래스명입니다.
  • <MethodName>은 메서드명입니다.
  • #number는 고유 메서드 번호입니다.

예시 IL2CPP 메서드:

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;
        };

변수 값 관측

Visual Studio 디버거를 사용해 변수 값을 관측하여 생성된 C++ 코드를 디버깅할 수 있습니다.

변수를 관측할 수 있도록 디버거를 멈추게 할 Visual Studio에 중단점을 설정할 수 있습니다.Visual Studio에서는 변수 위에 마우스를 두거나 Watch 창을 사용하여 변수 값을 관측할 수 있습니다.

정적 필드 관측

IL2CPP에서 Unity는 정적 필드를 Il2CppClass 인스턴스에 저장합니다.정적 필드 값을 관측하려면 다음 단계를 따르십시오.

  1. 코드에서 해당 타입의 Il2CppClass 구조에 대한 포인터를 찾습니다.
    참고:이 포인터는 사용하는 메서드 범위 내에 있지만 한 번 관측하고 나면 애플리케이션이 실행되는 동안은 동일한 메모리 주소에 머물게 됩니다.
  2. 해당 포인터에서 static_fields 필드의 값을 검색합니다.이는 특정 타입에 대한 정적 필드가 포함된 메모리 블록에 대한 포인터 입니다.
  3. 값을 해당 정적 필드 구조에 캐스트합니다.
  4. Visual Studio 디버거에서 값을 관측합니다.

예외 분석

IL2CPP는 네이티브 C++ 예외를 사용하여 .NET 예외를 구현합니다.

코드에서 예외를 분석하려면 다음을 수행합니다.

추가 리소스

C# 코드 디버깅
UWP용 C# 스크립트의 WinRT API