다음을 통해 공유


JavaScript 확장의 네이티브 디버거 개체 - 형식 개체

네이티브 디버거 개체는 디버거 환경의 다양한 구문을 나타냅니다. 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 확장 네이티브 디버거 개체

JavaScript 확장의 네이티브 디버거 개체 - 디자인 및 테스트 고려 사항

JavaScript 디버거 스크립팅

JavaScript 디버거 예제 스크립트