다음을 통해 공유


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

네이티브 디버거 개체는 디버거 환경의 다양한 구문을 나타냅니다. JavaScript 확장은 기본 언어의 형식 시스템에 직접 액세스할 수 있습니다. 이 액세스는 형식 개체의 개념을 통해 표현됩니다. 이 항목에서는 형식 개체와 연결된 속성에 대해 설명합니다.

네이티브 디버거 개체는 디버거 환경의 다양한 구문과 동작을 나타냅니다. 개체를 JavaScript 확장으로 전달(또는 획득)하여 디버거의 상태를 조작할 수 있습니다.

디버거 개체 JavaScript 확장에 대한 자세한 내용은 JavaScript 확장의 네이티브 디버거 개체를 참조하세요.

JavaScript 작업에 대한 일반적인 내용은 JavaScript 디버거 스크립팅을 참조하세요.

형식 개체

형식 개체는 여러 가지 방법으로 가져올 수 있습니다.

  • 개체: 스크립트에 JavaScript 내에 네이티브 개체가 있는 경우 해당 개체에서 targetType 속성에 액세스하여 네이티브 개체의 정적 형식을 나타내는 형식 개체 를 가져올 수 있습니다.
  • 호스트: host.getModuleType API를 호출하여 특정 모듈에 정의된 모든 형식의 형식 개체 를 반환할 수 있습니다.

형식 개체를 가져오면 다음과 같은 속성이 있습니다.

이름서명설명
name속성형식의 이름을 반환합니다.
크기속성형식의 크기를 64비트 값으로 반환합니다.
typeKind속성형식의 종류를 문자열로 반환합니다. "udt", "pointer", "memberPointer", "array", "function", "typedef", "enum" 또는 "intrinsic" 값 중 하나일 수 있습니다.
baseType속성이 형식의 기반이 되는 형식에 대한 형식 개체를 반환합니다. 이는 C++ 상속을 나타내지 않습니다. 포인터 형식의 경우 가리키는 형식입니다. 배열 형식의 경우 배열에 포함된 형식입니다.
fields속성명명된 속성으로 액세스할 수 있는 형식의 명명된 필드가 모두 있는 개체를 반환합니다. 각 속성의 값은 아래에 설명된 대로 필드 개체 입니다.
baseClasses속성형식의 모든 직접 기본 클래스의 배열을 반환합니다. 배열의 각 개체는 아래에 설명된 대로 기본 클래스 개체 입니다.
functionReturnType속성함수 형식의 경우 함수의 반환 형식을 나타내는 형식 개체를 반환합니다.
functionParameterTypes속성함수 형식의 경우 함수의 매개 변수 형식을 나타내는 형식 개체의 배열을 반환합니다.
functionCallingConvention속성함수 형식의 경우 함수의 호출 규칙을 문자열로 반환합니다. "unknown", "__cdecl", "fastcall", "stdcall" 또는 "thiscall" 값 중 하나일 수 있습니다.
pointerKind속성포인터 형식의 경우 포인터 종류를 문자열로 반환합니다. "standard", "reference", "rValueReference" 또는 "cxHat" 값 중 하나일 수 있습니다.
memberType속성멤버 포인터인 포인터 형식의 경우 멤버 클래스를 나타내는 형식 개체를 반환합니다.
isGeneric속성형식이 제네릭인지 여부를 반환합니다. 템플릿 형식에 대해 true가 반환됩니다.
genericArguments속성제네릭 형식의 경우 제네릭 인수의 배열을 반환합니다. 이러한 인수는 형식 인수이거나 상수 값일 수 있습니다.
isBitField속성형식의 스토리지가 비트필드인지 여부를 반환합니다.
bitFieldPositions속성비트 필드 스토리지를 나타내는 형식의 경우 비트 필드의 위치를 나타내는 비트 필드 설명 형식을 반환합니다.

이러한 모든 항목은 2단계 초기화 중에 존재합니다.

필드 개체

형식 내의 각 필드는 다음과 같이 속성을 갖는 필드 개체에 의해 설명됩니다.

이름서명설명
name속성필드의 이름을 반환합니다.
형식속성필드의 정적 형식을 나타내는 형식 개체를 반환합니다.
locationKind속성필드의 위치 종류(스토리지)를 문자열로 반환합니다. "member", "static", "constant" 또는 "none" 값 중 하나일 수 있습니다.
offset속성오프셋(예: "member")을 나타내는 위치 종류가 있는 필드의 경우 포함하는 형식 내 필드의 오프셋을 64비트 값으로 반환합니다.
위치속성위치를 나타내는 위치 종류(예: "static")가 있는 필드의 경우 필드의 위치를 위치 개체로 반환합니다.
value속성값(예: "상수")을 나타내는 위치 종류가 있는 필드의 경우 필드 값을 반환합니다.

이러한 모든 항목은 2단계 초기화 중에 존재합니다.

기본 클래스 개체

형식 내의 각 기본 클래스는 다음과 같이 속성을 갖는 기본 클래스 개체에 의해 설명됩니다.

이름서명설명
name속성기본 클래스의 이름을 반환합니다.
offset속성포함하는 형식 내에서 이 기본 클래스의 오프셋을 반환합니다.
형식속성기본 클래스의 정적 형식을 나타내는 형식 개체를 반환합니다.

이러한 모든 항목은 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 디버거 예제 스크립트