다음을 통해 공유


IDiaSymbol

기호 인스턴스의 속성을 설명합니다.

구문

IDiaSymbol : IUnknown

메서드(사전순 정렬)

다음 표에서는 IDiaSymbol 메서드를 보여 줍니다.

참고 항목

기호는 기호의 형식에 따라 이러한 메서드 중 일부에 대해서만 유의미한 데이터를 반환합니다. 메서드가 S_OK를 반환하는 경우 해당 메서드는 유의미한 데이터를 반환합니다.

메서드 설명
IDiaSymbol::findChildren 기호의 모든 자식을 검색합니다.
IDiaSymbol::findChildrenEx 기호의 자식을 검색합니다. 이 메서드는 IDiaSymbol::findChildren의 확장 버전입니다.
IDiaSymbol::findChildrenExByAddr 지정된 주소에서 유효한 기호의 자식을 검색합니다.
IDiaSymbol::findChildrenExByRVA 지정된 RVA(상대 가상 주소)에서 유효한 기호의 자식을 검색합니다.
IDiaSymbol::findChildrenExByVA 지정된 가상 주소에서 유효한 기호 자식을 검색합니다.
IDiaSymbol::findInlineFramesByAddr 클라이언트가 지정된 주소의 모든 인라인 프레임에서 반복될 수 있게 하는 열거형을 검색합니다.
IDiaSymbol::findInlineFramesByRVA 클라이언트가 지정된 RVA(상대 가상 주소)의 모든 인라인 프레임에서 반복될 수 있게 하는 열거형을 검색합니다.
IDiaSymbol::findInlineFramesByVA 클라이언트가 지정된 VA(가상 주소)의 모든 인라인 프레임에서 반복될 수 있게 하는 열거형을 검색합니다.
IDiaSymbol::findInlineeLines 클라이언트가 기호에서 직접 또는 간접적으로 인라인된 모든 함수의 줄 번호 정보를 반복할 수 있도록 하는 열거형을 검색합니다.
IDiaSymbol::findInlineeLinesByAddr 클라이언트가 지정된 주소 범위 기호에서 직간접적으로 인라인된 모든 함수의 줄 번호 정보를 반복할 수 있게 하는 열거형을 검색합니다.
IDiaSymbol::findInlineeLinesByRVA 직간접적으로 인라인되었으며 지정된 RVA(상대 가상 주소) 기회의 모든 함수의 줄 번호 정보를 클라이언트에서 반복할 수 있게 하는 열거형을 검색합니다.
IDiaSymbol::findInlineeLinesByVA 직간접적으로 인라인되었으며 지정된 VA(가상 주소) 기회의 모든 함수의 줄 번호 정보를 클라이언트에서 반복할 수 있게 하는 열거형을 검색합니다.
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag 해당하는 태그 값이 지정되면 이 메서드는 지정된 상대 가상 주소의 이 스텁 함수에 포함된 기호의 열거형을 반환합니다.
IDiaSymbol::findSymbolsForAcceleratorPointerTag C++ AMP 스텁 함수 내 액셀러레이터 포인터 태그의 수를 반환합니다.
IDiaSymbol::get_acceleratorPointerTags C++ AMP 액셀러레이터 키 스텁 함수에 해당하는 모든 액셀러레이터 포인터 태그 값을 반환합니다.
IDiaSymbol::get_access 클래스 멤버의 액세스 한정자를 검색합니다.
IDiaSymbol::get_addressOffset 주소 위치의 오프셋 부분을 검색합니다.
IDiaSymbol::get_addressSection 주소 위치의 섹션 부분을 검색합니다.
IDiaSymbol::get_addressTaken 다른 기호가 이 주소를 참조하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_age 프로그램 데이터베이스의 나이 값을 검색합니다.
IDiaSymbol::get_arrayIndexType 배열 인덱스 형식의 기호 식별자를 검색합니다.
IDiaSymbol::get_arrayIndexTypeId 기호의 배열 인덱스 형식 식별자를 검색합니다.
IDiaSymbol::get_backEndMajor 백 엔드 주 버전 번호를 검색합니다.
IDiaSymbol::get_backEndMinor 백 엔드 부 버전 번호를 검색합니다.
IDiaSymbol::get_backEndBuild 백 엔드 빌드 번호를 검색합니다.
IDiaSymbol::get_baseDataOffset 베이스 데이터 오프셋을 검색합니다.
IDiaSymbol::get_baseDataSlot 기본 데이터 슬롯을 검색합니다.
IDiaSymbol::get_baseSymbol 포인터의 기반이 되는 기호를 검색합니다.
IDiaSymbol::get_baseSymbolId 포인터의 기반이 되는 기호 ID를 검색합니다.
IDiaSymbol::get_baseType 기본 형식의 형식 태그를 검색합니다.
IDiaSymbol::get_bitPosition 위치의 비트 위치를 검색합니다.
IDiaSymbol::get_builtInKind HLSL 형식의 기본 제공 종류를 검색합니다.
IDiaSymbol::get_callingConvention 메서드의 호출 규칙에 대한 표시기를 반환합니다.
IDiaSymbol::get_classParent 기호의 클래스 부모에 대한 참조를 검색합니다.
IDiaSymbol::get_classParentId 기호의 클래스 부모 식별자를 검색합니다.
IDiaSymbol::get_code 기호가 코드 주소를 참조하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_compilerGenerated 기호가 컴파일러에서 생성되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_compilerName 컴파일 대상을 만드는 데 사용되는 컴파일러의 이름을 검색합니다.
IDiaSymbol::get_constructor 사용자 정의 데이터 형식에 생성자가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_container 이 기호의 포함하는 기호를 검색합니다.
IDiaSymbol::get_constType 사용자 정의 데이터 형식이 상수인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_count 목록 또는 배열의 항목 수를 검색합니다.
IDiaSymbol::get_countLiveRanges 로컬 기호와 연결된 유효한 주소 범위 수를 검색합니다.
IDiaSymbol::get_customCallingConvention 함수가 사용자 지정 호출 규칙을 사용하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_dataBytes OEM 기호의 데이터 바이트를 검색합니다.
IDiaSymbol::get_dataKind 데이터 기호의 변수 분류를 검색합니다.
IDiaSymbol::get_editAndContinueEnabled 컴파일된 프로그램 또는 단위의 편집하며 계속하기 기능을 설명하는 플래그를 검색합니다.
IDiaSymbol::get_farReturn 함수가 far 반환을 사용하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_frontEndMajor 프런트 엔드 주 버전 번호를 검색합니다.
IDiaSymbol::get_frontEndMinor 프런트 엔드 부 버전 번호를 검색합니다.
IDiaSymbol::get_frontEndBuild 프런트 엔드 빌드 번호를 검색합니다.
IDiaSymbol::get_function 공용 기호가 함수를 참조하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_guid 기호의 GUID를 검색합니다.
IDiaSymbol::get_hasAlloca 함수에 alloca 호출이 포함되는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasAssignmentOperator 사용자 정의 데이터 형식에 대입 연산자가 정의되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasCastOperator 사용자 정의 데이터 형식에 캐스트 연산자가 정의되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasDebugInfo 컴파일 대상에 디버깅 정보가 포함되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasEH 함수에 C++ 스타일 예외 처리기가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasEHa 함수에 비동기 예외 처리기가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasInlAsm 함수에 인라인 어셈블리가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasLongJump 함수에 longjmp 명령(C 스타일 예외 처리의 일부)이 포함되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasManagedCode 모듈에 관리 코드가 포함되어 있는지를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasNestedTypes 사용자 정의 데이터 형식에 중첩 형식 정의가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasSecurityChecks 함수 또는 컴파일 대상에 (/GS(버퍼 보안 검사) 컴파일러 스위치를 통해) 컴파일된 보안 검사가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasSEH 함수에 Win32 스타일 구조적 예외 처리가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_hasSetJump 함수에 setjmp 명령이 포함되는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_indirectVirtualBaseClass 사용자 정의 데이터 형식이 간접 가상 기본 클래스인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_InlSpec 함수가 인라인 특성으로 표시되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_interruptReturn 함수에 인터럽트 명령의 반환이 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_intro 함수가 기본 클래스 가상 함수인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isAcceleratorGroupSharedLocal 기호가 C++ AMP 액셀러레이터에 대해 컴파일된 코드에서 그룹 공유 지역 변수에 해당하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isAcceleratorPointerTagLiveRange 기호가 C++ AMP 가속기용으로 컴파일된 코드에 있는 포인터 변수의 태그 구성 요소에 대한 ‘정의 범위 기호’에 해당하는지 여부를 나타내는 플래그를 검색합니다. 정의 범위 기호는 주소의 범위에 대한 변수의 위치입니다.
IDiaSymbol::get_isAcceleratorStubFunction 기호가 parallel_for_each 호출에 해당하는 액셀러레이터에 대해 컴파일된 셰이더의 최상위 함수 기호에 해당하는지 여부를 나타냅니다.
IDiaSymbol::get_isAggregated 데이터가 많은 기호 집계의 일부인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isCTypes 기호 파일에 C 형식이 포함되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isCVTCIL 모듈이 CIL(공용 중간 언어)에서 네이티브 코드로 변환되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isDataAligned 사용자 정의 데이터 형식의 요소가 특정 경계에 정렬되는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isHLSLData 이 기호가 HLSL(High Level Shader Language) 데이터를 나타내는지 여부를 지정합니다.
IDiaSymbol::get_isHotpatchable 모듈이 /hotpatch(핫패치 가능 이미지 만들기) 컴파일러 스위치를 사용하여 컴파일되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isLTCG 관리 컴파일 대상이 링커의 LTCG가 연결되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isMatrixRowMajor 행렬이 행 중심인지 여부를 지정합니다.
IDiaSymbol::get_isMSILNetmodule 관리 컴파일 대상이 .netmodule(메타데이터만 포함)인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isMultipleInheritance this 포인터가 여러 상속을 가진 데이터 멤버를 가리키는지 여부를 지정합니다.
IDiaSymbol::get_isNaked 함수에 naked 특성이 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isOptimizedAway 변수가 최적화되어 있는지 여부를 지정합니다.
IDiaSymbol::get_isPointerBasedOnSymbolValue this 포인터가 기호 값을 기반으로 하는지 여부를 지정합니다.
IDiaSymbol::get_isPointerToDataMember 이 기호가 데이터 멤버에 대한 포인터인지 여부를 지정합니다.
IDiaSymbol::get_isPointerToMemberFunction 이 기호가 멤버 함수에 대한 포인터인지 여부를 지정합니다.
IDiaSymbol::get_isReturnValue 변수가 반환 값을 전달하는지 여부를 지정합니다.
IDiaSymbol::get_isSdl 모듈이 /SDL 옵션으로 컴파일되는지 여부를 지정합니다.
IDiaSymbol::get_isSingleInheritance this 포인터가 단일 상속을 가진 데이터 멤버를 가리키는지 여부를 지정합니다.
IDiaSymbol::get_isSplitted 데이터가 개별 기호의 집계로 분할되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isStatic 함수 또는 썽크 레이어가 정적인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isStripped 비공개 기호가 기호 파일에서 제거되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_isVirtualInheritance this 포인터가 가상 상속을 가진 데이터 멤버를 가리키는지 여부를 지정합니다.
IDiaSymbol::get_language 소스의 언어를 검색합니다.
IDiaSymbol::get_length 이 기호가 나타내는 개체에서 사용하는 메모리의 바이트 수를 검색합니다.
IDiaSymbol::get_lexicalParent 기호의 어휘 부모에 대한 참조를 검색합니다.
IDiaSymbol::get_lexicalParentId 기호의 어휘 부모 식별자를 검색합니다.
IDiaSymbol::get_libraryName 개체가 로드된 라이브러리 또는 개체 파일의 파일 이름을 검색합니다.
IDiaSymbol::get_liveRangeLength 로컬 기호가 유효한 주소 범위의 길이를 반환합니다.
IDiaSymbol::get_liveRangeStartAddressSection 로컬 기호가 유효한 시작 주소 범위의 섹션 파트를 반환합니다.
IDiaSymbol::get_liveRangeStartAddressOffset 로컬 기호가 유효한 시작 주소 범위의 오프셋 파트를 반환합니다.
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress 로컬 기호가 유효한 주소 범위의 시작을 반환합니다.
IDiaSymbol::get_locationType 데이터 기호의 위치 유형을 검색합니다.
IDiaSymbol::get_lowerBound Fortran 배열 차원의 하한을 검색합니다.
IDiaSymbol::get_lowerBoundId FORTRAN 배열 차원의 하한에 대한 기호 식별자를 검색합니다.
IDiaSymbol::get_machineType 대상 CPU 종류를 검색합니다.
IDiaSymbol::get_managed 기호가 관리 코드를 참조하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_memorySpaceKind 메모리 공간 종류를 검색합니다.
IDiaSymbol::get_msil 기호가 MSIL(Microsoft Intermediate Language) 코드를 참조하는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_name 기호의 이름을 검색합니다.
IDiaSymbol::get_nested 사용자 정의 데이터 형식이 중첩인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_noInline 함수가 noinline 특성으로 표시되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_noReturn 함수가 noreturn 특성으로 선언되었는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_noStackOrdering 스택 버퍼 검사의 일부로 스택 순서 지정을 수행할 수 없는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_notReached 함수 또는 레이블에 도달하지 않는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_numberOfAcceleratorPointerTags C++ AMP 스텁 함수 내 액셀러레이터 포인터 태그의 수를 반환합니다.
IDiaSymbol::get_numberOfModifiers 원래 형식에 적용되는 한정자 수를 검색합니다.
IDiaSymbol::get_numberOfRegisterIndices 레지스터 인덱스 수를 검색합니다.
IDiaSymbol::get_numberOfRows 행렬의 행 수를 검색합니다.
IDiaSymbol::get_numberOfColumns 행렬의 열 수를 검색합니다.
IDiaSymbol::get_objectFileName 개체 파일 이름을 검색합니다.
IDiaSymbol::get_objectPointerType 클래스 메서드에 대한 개체 포인터의 형식을 검색합니다.
IDiaSymbol::get_oemId 기호의 oemId 값을 검색합니다.
IDiaSymbol::get_oemSymbolId 기호의 oemSymbolId 값을 검색합니다.
IDiaSymbol::get_offset 기호 위치의 오프셋을 검색합니다.
IDiaSymbol::get_optimizedCodeDebugInfo 함수 또는 레이블에 최적화된 코드와 디버그 정보가 포함되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_overloadedOperator 사용자 정의 데이터 형식에 오버로드된 연산자가 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_packed 사용자 정의 데이터 형식이 압축되어 있는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_platform 프로그램 또는 컴파일 대상이 컴파일된 플랫폼 형식을 검색합니다.
IDiaSymbol::get_pure 함수가 순수 가상인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_rank FORTRAN 다차원 배열의 순위를 검색합니다.
IDiaSymbol::get_reference 포인터 형식이 참조인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_registerId 위치의 레지스터 지정자를 검색합니다.
IDiaSymbol::get_registerType 레지스터 형식을 검색합니다.
IDiaSymbol::get_relativeVirtualAddress 위치의 RVA(상대 가상 주소)를 검색합니다.
IDiaSymbol::get_restrictedType this 포인터가 제한된 것으로 플래그 지정되었는지 여부를 지정합니다.
IDiaSymbol::get_samplerSlot 샘플러 슬롯을 검색합니다.
IDiaSymbol::get_scoped 사용자 정의 데이터 형식이 비전역 어휘 범위에 표시되는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_signature 기호의 시그니처 값을 검색합니다.
IDiaSymbol::get_sizeInUdt 사용자 정의 형식의 멤버 크기를 검색합니다.
IDiaSymbol::get_slot 위치의 슬롯 번호를 검색합니다.
IDiaSymbol::get_sourceFileName 원본 파일의 파일 이름을 검색합니다.
IDiaSymbol::getSrcLineOnTypeDefn 지정된 사용자 정의 형식이 정의된 위치를 나타내는 소스 파일과 줄 번호를 검색합니다.
IDiaSymbol::get_stride 행렬 또는 stride 배열의 stride를 검색합니다.
IDiaSymbol::get_subType 하위 형식을 검색합니다.
IDiaSymbol::get_subTypeId 하위 형식 ID를 검색합니다.
IDiaSymbol::get_symbolsFileName 기호가 로드된 파일의 이름을 검색합니다.
IDiaSymbol::get_symIndexId 고유 기호 식별자를 검색합니다.
IDiaSymbol::get_symTag 기호 형식 분류자를 검색합니다.
IDiaSymbol::get_targetOffset 썽크 대상의 오프셋 섹션을 검색합니다.
IDiaSymbol::get_targetRelativeVirtualAddress 썽크 대상의 RVA(상대 가상 주소)를 검색합니다.
IDiaSymbol::get_targetSection 썽크 대상의 주소 섹션을 검색합니다.
IDiaSymbol::get_targetVirtualAddress 썽크 대상의 VA(가상 주소)를 검색합니다.
IDiaSymbol::get_textureSlot 텍스처 슬롯을 검색합니다.
IDiaSymbol::get_thisAdjust 메서드에 대한 논리적 this 조정자를 검색합니다.
IDiaSymbol::get_thunkOrdinal 함수의 썽크 형식을 검색합니다.
IDiaSymbol::get_timeStamp 기본 실행 파일의 타임스탬프를 검색합니다.
IDiaSymbol::get_token 관리형 함수 또는 변수의 메타데이터 토큰을 검색합니다.
IDiaSymbol::get_type 함수 시그니처에 대한 참조를 검색합니다.
IDiaSymbol::get_typeId 기호의 형식 식별자를 검색합니다.
IDiaSymbol::get_types 이 기호에 대한 컴파일러별 형식 값의 배열을 검색합니다.
IDiaSymbol::get_typeIds 이 기호에 대한 컴파일러별 형식 식별자 값의 배열을 검색합니다.
IDiaSymbol::get_uavSlot UAV 슬롯을 검색합니다.
IDiaSymbol::get_udtKind 다양한 UDT(사용자 정의 형식)를 검색합니다.
IDiaSymbol::get_unalignedType 사용자 정의 데이터 형식이 정렬되지 않았는지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_undecoratedName C++ 데코레이트 또는 연결 이름에 대해 데코레이트되지 않은 이름을 검색합니다.
IDiaSymbol::get_undecoratedNameEx 확장 필드의 값을 기반으로 데코레이트되지 않은 이름을 검색하는 get_undecoratedName 메서드의 확장입니다.
IDiaSymbol::get_unmodifiedTypeId 원래(수정되지 않은) 형식의 ID를 검색합니다.
IDiaSymbol::get_upperBound FORTRAN 배열 차원의 상한을 검색합니다.
IDiaSymbol::get_upperBoundId FORTRAN 배열 차원의 상한에 대한 기호 식별자를 검색합니다.
IDiaSymbol::get_value 상수 값을 검색합니다.
IDiaSymbol::get_virtual 함수가 가상인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_virtualAddress 위치의 VA(가상 주소)를 검색합니다.
IDiaSymbol::get_virtualBaseClass 사용자 정의 데이터 형식이 가상 기본 클래스인지 여부를 나타내는 플래그를 검색합니다.
IDiaSymbol::get_virtualBaseDispIndex 가상 기본 치환 테이블의 인덱스를 검색합니다.
IDiaSymbol::get_virtualBaseOffset 가상 함수의 가상 함수 테이블에서 오프셋을 검색합니다.
IDiaSymbol::get_virtualBasePointerOffset 가상 기본 포인터의 오프셋을 검색합니다.
IDiaSymbol::get_virtualBaseTableType 가상 기본 테이블 포인터의 형식을 검색합니다.
IDiaSymbol::get_virtualTableShape 사용자 정의 형식에 대한 가상 표 형식의 기호 인터페이스를 검색합니다.
IDiaSymbol::get_virtualTableShapeId 기호의 가상 표 도형 식별자를 검색합니다.
IDiaSymbol::get_volatileType 사용자 정의 데이터 형식이 휘발성인지 여부를 나타내는 플래그를 검색합니다.

설명

호출자 참고 사항

다음 메서드 중 하나를 호출하여 이 인터페이스를 가져옵니다.

예시

이 예제에서는 지정된 상대 가상 주소에서 함수에 대한 지역 변수를 표시하는 방법을 보여 줍니다. 또한 서로 다른 형식의 기호가 서로 어떻게 관련되어 있는지도 보여 줍니다.

참고 항목

CDiaBSTRBSTR를 래핑하고 인스턴스화가 범위를 벗어날 때 자동으로 문자열을 여는 것을 처리하는 클래스입니다.

void DumpLocalVars( DWORD rva, IDiaSession *pSession )
{
    CComPtr< IDiaSymbol > pBlock;
    if ( FAILED( psession->findSymbolByRVA( rva, SymTagBlock, &pBlock ) ) )
    {
        Fatal( "Failed to find symbols by RVA" );
    }
    CComPtr< IDiaSymbol > pscope;
    for ( ; pBlock != NULL; )
    {
        CComPtr< IDiaEnumSymbols > pEnum;
        // local data search
        if ( FAILED( pBlock->findChildren( SymTagNull, NULL, nsNone, &pEnum ) ) )
        {
            Fatal( "Local scope findChildren failed" );
        }
        CComPtr< IDiaSymbol > pSymbol;
        DWORD tag;
        DWORD celt;
        while ( pEnum != NULL &&
                SUCCEEDED( pEnum->Next( 1, &pSymbol, &celt ) ) &&
                celt == 1)
        {
            pSymbol->get_symTag( &tag );
            if ( tag == SymTagData )
            {
                CDiaBSTR name;
                DWORD    kind;
                pSymbol->get_name( &name );
                pSymbol->get_dataKind( &kind );
                if ( name != NULL )
                    wprintf_s( L"\t%s (%s)\n", name, szDataKinds[ kind ] );
            }
            else if ( tag == SymTagAnnotation )
            {
                CComPtr< IDiaEnumSymbols > pValues;
                // local data search
                wprintf_s( L"\tAnnotation:\n" );
                if ( FAILED( pSymbol->findChildren( SymTagNull, NULL, nsNone, &pValues ) ) )
                    Fatal( "Annotation findChildren failed" );
                pSymbol = NULL;
                while ( pValues != NULL &&
                        SUCCEEDED( pValues->Next( 1, &pSymbol, &celt ) ) &&
                        celt == 1 )
                {
                    CComVariant value;
                    if ( pSymbol->get_value( &value ) != S_OK )
                        Fatal( "No value for annotation data." );
                    wprintf_s( L"\t\t%ws\n", value.bstrVal );
                    pSymbol = NULL;
                }
            }
            pSymbol = NULL;
        }
        pBlock->get_symTag( &tag );
        if ( tag == SymTagFunction )    // stop when at function scope
            break;
        // move to lexical parent
        CComPtr< IDiaSymbol > pParent;
        if ( SUCCEEDED( pBlock->get_lexicalParent( &pParent ) )
            && pParent != NULL ) {
            pBlock = pParent;
        }
        else
        {
            Fatal( "Finding lexical parent failed." );
        }
    };
}

요구 사항

Header: Dia2.h

라이브러리: diaguids.lib

DLL: msdia80.dll

참고 항목