네이티브 디버거 개체는 디버거 환경의 다양한 구문을 나타냅니다. JavaScript 확장은 기본 언어의 형식 시스템에 직접 액세스할 수 있습니다. 이 액세스는 형식 개체의 개념을 통해 표현됩니다. 이 항목에서는 형식 개체와 연결된 속성에 대해 설명합니다.
네이티브 디버거 개체는 디버거 환경의 다양한 구문과 동작을 나타냅니다. 개체를 JavaScript 확장으로 전달(또는 획득)하여 디버거의 상태를 조작할 수 있습니다.
디버거 개체 JavaScript 확장에 대한 자세한 내용은 JavaScript 확장의 네이티브 디버거 개체를 참조하세요.
JavaScript 작업에 대한 일반적인 내용은 JavaScript 디버거 스크립팅을 참조하세요.
형식 개체
형식 개체는 다음과 같은 여러 가지 방법으로 획득할 수 있습니다.
- 개체: 스크립트에 JavaScript 내에 네이티브 개체가 있는 경우 해당 개체에서 targetType 속성에 액세스하여 네이티브 개체의 정적 형식을 나타내는 형식 개체 를 가져올 수 있습니다.
- 호스트: host.getModuleType API를 호출하여 특정 모듈에 정의된 모든 형식에 대한 형식 개체 를 반환할 수 있습니다.
형식 개체를 가져오면 다음과 같은 속성이 있습니다.
| 이름 | 서명 | 설명 |
| 이름 | 재산 | 형식의 이름을 반환합니다. |
| 크기 | 재산 | 형식의 크기를 64비트 값으로 반환합니다. |
| typeKind | 재산 | 형식의 종류를 문자열로 반환합니다. "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" 또는 "intrinsic" 값 중 하나일 수 있습니다. |
| 기본 유형 | 재산 | 이 형식의 기반이 되는 형식의 형식 개체를 반환합니다. 이는 C++ 상속을 나타내지 않습니다. 포인터 형식의 경우 가리키는 항목의 형식입니다. 배열 형식의 경우 배열에 포함된 형식입니다. |
| 필드 | 재산 | 명명된 속성으로 액세스할 수 있는 형식의 명명된 필드가 모두 있는 개체를 반환합니다. 각 속성의 값은 아래에 설명된 대로 필드 개체 입니다. |
| 기본 클래스들 | 재산 | 형식의 모든 직접 기본 클래스의 배열을 반환합니다. 배열의 각 개체는 아래에 설명된 대로 기본 클래스 개체 입니다. |
| 함수 반환 유형 | 재산 | 함수 형식의 경우 함수의 반환 형식을 나타내는 형식 개체를 반환합니다. |
| 함수 매개변수 유형 | 재산 | 함수 형식의 경우 함수의 매개 변수 형식을 나타내는 형식 개체의 배열을 반환합니다. |
| 함수호출규약 | 재산 | 함수 형식의 경우 함수의 호출 규칙을 문자열로 반환합니다. "unknown", "__cdecl", "fastcall", "stdcall" 또는 "thiscall" 값 중 하나일 수 있습니다. |
| pointerKind | 재산 | 포인터 형식의 경우 포인터 종류를 문자열로 반환합니다. "standard", "reference", "rValueReference" 또는 "cxHat" 값 중 하나일 수 있습니다. |
| 멤버 유형 | 재산 | 멤버 포인터인 포인터 형식의 경우 멤버 클래스를 나타내는 형식 개체를 반환합니다. |
| isGeneric | 재산 | 형식이 제네릭인지 여부를 반환합니다. 템플릿 형식에 대해 true를 반환합니다. |
| 제네릭아규먼츠 | 재산 | 제네릭 형식의 경우 제네릭 인수의 배열을 반환합니다. 이러한 인수는 형식 인수이거나 상수 값일 수 있습니다. |
| isBitField | 재산 | 형식의 스토리지가 비트 필드인지 여부를 반환합니다. |
| 비트필드 위치 | 재산 | 비트 필드 스토리지를 나타내는 형식의 경우 비트 필드의 위치를 나타내는 비트 필드 설명 형식을 반환합니다. |
이러한 모든 항목은 2단계 초기화 중에 존재합니다.
필드 개체
형식 내의 각 필드는 다음과 같이 속성을 갖는 필드 개체에 의해 설명됩니다.
| 이름 | 서명 | 설명 |
| 이름 | 재산 | 필드의 이름을 반환합니다. |
| 유형 | 재산 | 필드의 정적 형식을 나타내는 형식 개체를 반환합니다. |
| locationKind | 재산 | 필드의 위치 종류(스토리지)를 문자열로 반환합니다. "member", "static", "constant" 또는 "none" 값 중 하나일 수 있습니다. |
| 상쇄 | 재산 | 오프셋(예: "member")을 나타내는 위치 종류가 있는 필드의 경우 포함하는 형식 내 필드의 오프셋을 64비트 값으로 반환합니다. |
| 위치 | 재산 | 위치를 나타내는 위치 종류(예: "static")가 있는 필드의 경우 필드의 위치를 위치 개체로 반환합니다. |
| 가치 | 재산 | 값(예: "constant")을 나타내는 위치 종류가 있는 필드의 경우 필드 값을 반환합니다. |
이러한 모든 항목은 2단계 초기화 중에 존재합니다.
기본 클래스 개체
형식 내의 각 기본 클래스는 다음과 같이 속성을 갖는 기본 클래스 개체에 의해 설명됩니다.
| 이름 | 서명 | 설명 |
| 이름 | 재산 | 기본 클래스의 이름을 반환합니다. |
| 상쇄 | 재산 | 포함하는 형식 내에서 이 기본 클래스의 오프셋을 반환합니다. |
| 유형 | 재산 | 기본 클래스의 정적 형식을 나타내는 형식 개체를 반환합니다. |
이러한 모든 항목은 2단계 초기화 중에 존재합니다.
코드 예제
코드 예제는 ImageInfo.js 스크립트를 참조하세요. 코드 샘플에 대한 자세한 내용은 JavaScript 디버거 예제 스크립트를 참조하세요.
// fieldType references basic types that should be present in **ANY** symbolic information.
// Just grab the first module as the "reference module" for this purpose. We cannot grab
// "ntdll" generically as we want to avoid a situation in which the debugger opens a module (-z ...)
// from failing.
//
var moduleName = contextInheritorModule.__ComparisonName;
var typeObject = host.getModuleType(moduleName, field.fieldType, contextInheritorModule);
var result = host.createTypedObject(addr, typeObject);
참고 항목
JavaScript 확장 네이티브 디버거 개체