다음을 통해 공유


디버깅에 대 한 SDK 도우미

이러한 함수 및 선언을 c + +에서 디버그 엔진, 식 계산기 및 기호 공급자 구현에 대 한 전역 도우미 함수입니다.

참고

이 지금은 이러한 함수와 선언은 관리 되는 버전입니다.

개요

Visual Studio 사용 하는 순서에 디버깅 엔진, 식 계산기 및 기호 공급자는 등록 되어야 합니다. 이 레지스트리 하위 키 및 항목 "설정은 메트릭."로 알려져, 설정 하 여 수행 됩니다. 다음 전역 함수는 이러한 메트릭을 업데이트 하는 프로세스를 간편 하 게 디자인 되었습니다. 이러한 함수에서 업데이트 된 각 레지스트리 하위 키의 레이아웃을 확인 하려면 레지스트리 위치를 참조 하십시오.

일반적인 메트릭은 함수

이러한 디버그 엔진에 사용 되는 일반적인 기능입니다. 함수 식 계산기에 대 한 특별 한 기호 공급자는 나중에 자세히 설명 되어 있습니다.

GetMetric 메서드

메트릭 값을 레지스트리에서 검색합니다.

HRESULT GetMetric(
   LPCWSTR pszMachine,
   LPCWSTR pszType,
   REFGUID guidSection,
   LPCWSTR pszMetric,
   DWORD * pdwValue,
   LPCWSTR pszAltRoot
);

Parameter

설명

pszMachine

[in] 해당 등록 작성 된 가능 하면 원격 컴퓨터의 이름 (NULL 로컬 컴퓨터를 의미)입니다.

pszType

[in] 미터법 형식 중 하나입니다.

guidSection

[in] 특정 엔진, 계산기, 예외 등의 GUID입니다. 이 하위 섹션에서 특정 요소에 대 한 미터법 형식 지정합니다.

pszMetric

[in] 가져올 메트릭입니다. 이 특정 값 이름에 해당합니다.

pdwValue

[in] 메트릭은 값의 저장소 위치입니다. 여러 가지 맛의 GetMetric DWORD (이 예에서 같이), BSTR, GUID 또는 Guid의 배열을 반환할 수 있습니다.

pszAltRoot

[in] 사용 하 여 대체 레지스트리 루트입니다. 설정 NULL 기본값을 사용 합니다.

SetMetric 메서드

레지스트리에서 지정 된 메트릭 값을 설정합니다.

HRESULT SetMetric(
         LPCWSTR pszType,
         REFGUID guidSection,
         LPCWSTR pszMetric,
   const DWORD   dwValue,
         bool    fUserSpecific,
         LPCWSTR pszAltRoot
);

Parameter

설명

pszType

[in] 미터법 형식 중 하나입니다.

guidSection

[in] 특정 엔진, 계산기, 예외 등의 GUID입니다. 이 하위 섹션에서 특정 요소에 대 한 미터법 형식 지정합니다.

pszMetric

[in] 가져올 메트릭입니다. 이 특정 값 이름에 해당합니다.

dwValue

[in] 저장소 위치는 미터법의 값입니다. 여러 가지 맛의 SetMetric DWORD (이 예에서), BSTR, GUID 또는 Guid의 배열을 저장할 수 있습니다.

fUserSpecific

[in] 사용자 고유의 메트릭입니다 및 로컬 시스템 하이브를 대신 사용자의 하이브를 작성 해야 하는 경우 TRUE입니다.

pszAltRoot

[in] 사용 하 여 대체 레지스트리 루트입니다. 설정 NULL 기본값을 사용 합니다.

RemoveMetric 메서드

지정 된 메트릭의 레지스트리에서 제거합니다.

HRESULT RemoveMetric(
   LPCWSTR pszType,
   REFGUID guidSection,
   LPCWSTR pszMetric,
   LPCWSTR pszAltRoot
);

Parameter

설명

pszType

[in] 미터법 형식 중 하나입니다.

guidSection

[in] 특정 엔진, 계산기, 예외 등의 GUID입니다. 이 하위 섹션에서 특정 요소에 대 한 미터법 형식 지정합니다.

pszMetric

[in] 제거할 메트릭입니다. 이 특정 값 이름에 해당합니다.

pszAltRoot

[in] 사용 하 여 대체 레지스트리 루트입니다. 설정 NULL 기본값을 사용 합니다.

EnumMetricSections 메서드

다양 한 메트릭 섹션 레지스트리에서 열거합니다.

HRESULT EnumMetricSections(
   LPCWSTR pszMachine,
   LPCWSTR pszType,
   GUID *  rgguidSections,
   DWORD * pdwSize,
   LPCWSTR pszAltRoot
);

Parameter

설명

pszMachine

[in] 해당 등록 작성 된 가능 하면 원격 컴퓨터의 이름 (NULL 로컬 컴퓨터를 의미)입니다.

pszType

[in] 미터법 형식 중 하나입니다.

rgguidSections

[in, out] 미리 할당 된 배열에서 Guid입니다.

pdwSize

[in] 최대 저장할 수 있는 Guid는 rgguidSections 배열입니다.

pszAltRoot

[in] 사용 하 여 대체 레지스트리 루트입니다. 설정 NULL 기본값을 사용 합니다.

식 계산기 기능

Function

설명

GetEEMetric

메트릭 값을 레지스트리에서 검색합니다.

SetEEMetric

레지스트리에서 지정 된 메트릭 값을 설정합니다.

RemoveEEMetric

지정 된 메트릭의 레지스트리에서 제거합니다.

GetEEMetricFile

파일 이름에서 지정 된 메트릭을 가져옵니다 및 로드 파일 내용을 문자열로 반환 합니다.

예외 함수

Function

설명

GetExceptionMetric

메트릭 값을 레지스트리에서 검색합니다.

SetExceptionMetric

레지스트리에서 지정 된 메트릭 값을 설정합니다.

RemoveExceptionMetric

지정 된 메트릭의 레지스트리에서 제거합니다.

RemoveAllExceptionMetrics

모든 예외 메트릭스를 레지스트리에서 제거합니다.

공급자가 함수 기호

Function

설명

GetSPMetric

메트릭 값을 레지스트리에서 검색합니다.

SetSPMetric

레지스트리에서 지정 된 메트릭 값을 설정합니다.

RemoveSPMetric

지정 된 메트릭의 레지스트리에서 제거합니다.

열거 함수

Function

설명

EnumMetricSections

모든 메트릭을 메트릭 지정 된 형식에 대해 열거합니다.

EnumDebugEngine

등록 된 디버깅 엔진을 열거합니다.

EnumEEs

등록 된 식 계산기를 열거합니다.

EnumExceptionMetrics

모든 예외 메트릭스를 열거합니다.

메트릭 정의

이러한 정의 대 한 미리 정의 된 메트릭 이름 사용할 수 있습니다. 다양 한 레지스트리 키 및 값 이름 및 모든 와이드 문자 문자열로 정의 된 이름에 해당 합니다: 예를 들어, extern LPCWSTR metrictypeEngine.

미리 정의 된 메트릭 형식

설명 합니다: 기본 키에 대해....

metrictypeEngine

모든 엔진이 메트릭스를 디버그합니다.

metrictypePortSupplier

모든 포트 공급자 메트릭입니다.

metrictypeException

모든 예외 메트릭이 있습니다.

metricttypeEEExtension

모든 식 계산기 확장 합니다.

디버그 엔진 속성

설명

metricAddressBP

주소 중단점에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricAlwaysLoadLocal

항상 로컬로 디버그 엔진을 로드 하려면 0이 아닌 설정.

metricLoadInDebuggeeSession

사용 하지 않는

metricLoadedByDebuggee

디버그 엔진 항상 또는 디버깅 중인 프로그램에 의해 로드 됩니다 나타내는 0이 아닌 설정.

metricAttach

첨부 파일을 기존 프로그램에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricCallStackBP

호출 스택 중단점에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricConditionalBP

조건부 중단점의 설정에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricDataBP

중단점에서 데이터 변경의 설정에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricDisassembly

생산 하는 분해 목록에 대 한 지원을 나타내기 위해 0이 아닌 설정 합니다.

metricDumpWriting

덤프 (는 출력 장치 메모리 덤프) 쓰기에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricENC

편집 하며 계속 하기에 대 한 지원을 나타낼 수를 0이 아닌 설정 합니다.

참고

사용자 지정 디버그 엔진이 되지 않도록 설정 해야 합니다 또는 항상 0으로 설정 해야 합니다.

metricExceptions

예외에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricFunctionBP

(특정 함수 이름을 호출할 때 중단 중단점) 명명 된 중단점에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricHitCountBP

중단점 (만 되 고 특정 횟수에 도달 하면 트리거되는 중단점) "방문 포인트"의 설정에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricJITDebug

0이 아닌-의 시간 (실행 중인 프로세스에 예외가 발생 하면 디버거에서 시작 됩니다) 디버깅을 지원 하기에 설정 합니다.

metricMemory

사용 하지 않는

metricPortSupplier

하나 구현 되는 경우 포트 공급자의 CLSID에 설정 합니다.

metricRegisters

사용 하지 않는

metricSetNextStatement

(어떤 중간 문 실행을 건너뜁니다) 다음 문을 설정에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricSuspendThread

스레드 실행을 일시 중단 하는 것에 대 한 지원을 나타내기 위해 0이 아닌 설정.

metricWarnIfNoSymbols

기호가 있는 경우 사용자가 알림을 받을 수 나타내려면 0 이외의 설정 하십시오.

metricProgramProvider

이 프로그램 공급자의 CLSID에 설정 합니다.

metricAlwaysLoadProgramProviderLocal

이 0이 아닌 프로그램 공급자가 항상 로컬로 로드 된 것을 나타냅니다에 설정 합니다.

metricEngineCanWatchProcess

디버그 엔진 프로그램 공급자의 이벤트 처리에 대 한 감시를 나타내기 위해 0이 아닌 설정 합니다.

metricRemoteDebugging

원격 디버깅을 지원 하려면 0이 아닌 설정 합니다.

metricEncUseNativeBuilder

이 0이 아닌 편집 하며 계속 하는 관리자는 디버그 엔진 encbuild.dll을 편집 하며 계속 하기에 대 한 빌드를 사용할 수를 설정 합니다.

참고

사용자 지정 디버그 엔진이 되지 않도록 설정 해야 합니다 또는 항상 0으로 설정 해야 합니다.

metricLoadUnderWOW64

디버그 엔진 디버기 프로세스에서 WOW에서 64 비트 프로세스를 디버깅할 때 로드 하도록 나타내는 0 이외의 설정 합니다. 그렇지 않으면 디버그 엔진 (w o w 64에서 실행 되 고)는 Visual Studio 프로세스에서 로드 됩니다.

metricLoadProgramProviderUnderWOW64

프로그램 공급자는 WOW에서 64 비트 프로세스를 디버깅할 때 디버기가 프로세스에서 로드 된 것을 나타냅니다에 0 이외의 설정 합니다. 그렇지 않으면 Visual Studio 프로세스에서 로드 됩니다.

metricStopOnExceptionCrossingManagedBoundary

처리 되지 않은 예외 코드 관리/비관리 경계를 넘어 발생 하는 경우 프로세스를 중지 하도록 지정 하는 0 이외의 설정 합니다.

metricAutoSelectPriority

이 자동 선택 디버그 엔진 (높은 값은 높은 우선 순위)의 우선 순위를 설정 합니다.

metricAutoSelectIncompatibleList

자동 선택 영역을 무시 합니다 디버깅 엔진에 대 한 Guid를 지정 하는 항목을 포함 하는 레지스트리 키입니다. 이러한 항목에는 숫자입니다 (0, 1, 2, 등)으로 GUID는 문자열로 표현 합니다.

metricIncompatibleList

이 디버그 엔진과 호환 되지 않는 디버깅 엔진에 대 한 Guid를 지정 하는 항목을 포함 하는 레지스트리 키입니다.

metricDisableJITOptimization

디버깅 하는 동안 적시에 최적화 (예: 관리 되는 코드)를 사용 하지 않도록 지정 하려면 0이 아닌 설정 합니다.

식 평가기 속성

설명

metricEngine

지정 된 식 계산기는 지원 되는 디버깅 엔진의 수를 보유 합니다.

metricPreloadModules

이 프로그램에 대해 식 계산기를 시작 하는 경우 모듈 미리 로드 합니다 나타내려면 0이 아닌 설정.

metricThisObjectName

이것을 "이" 개체 이름으로 설정 합니다.

식 평가기 확장 속성

설명

metricExtensionDll

이 확장을 지 원하는 dll의 이름입니다.

metricExtensionRegistersSupported

지원 되는 레지스터의 목록입니다.

metricExtensionRegistersEntryPoint

레지스터에 액세스 하기 위한 시작 지점입니다.

metricExtensionTypesSupported

지원 되는 형식의 목록입니다.

metricExtensionTypesEntryPoint

형식에 액세스 하는 것에 대 한 진입점입니다.

포트 공급자 속성

설명

metricPortPickerCLSID

(대화 상자 사용자 포트를 선택 하 고 디버깅 하는 데 사용 하는 포트를 추가할 수 있습니다) 포트 선택기의 CLSID입니다.

metricDisallowUserEnteredPorts

사용자가 입력 한 포트 포트 공급자에 추가할 수 없으면 0이 아닌 (이 포트 선택 대화 상자의 기본적으로 읽기 전용으로 설정) 합니다.

metricPidBase

포트 공급자가 프로세스 Id를 할당 하는 경우 사용 되는 기본 프로세스 ID.

미리 정의 된 SP 저장소 형식

설명

storetypeFile

기호를 별도 파일에 저장 됩니다.

storetypeMetadata

기호는 어셈블리의 메타 데이터로 저장 됩니다.

기타 속성

설명

metricShowNonUserCode

Nonuser 코드를 표시 하는 0 이외의 설정 합니다.

metricJustMyCodeStepping

이 단계별 실행 사용자 코드에만 발생할 수 있습니다 나타내기 위해 0이 아닌 설정.

metricCLSID

미터는 특정 종류의 개체에 대 한 CLSID입니다.

metricName

미터는 특정 종류의 개체에 대 한 친숙 한 이름입니다.

metricLanguage

언어 이름입니다.

레지스트리 위치

메트릭을 읽기 / 특별히에 있는 레지스트리에 기록 되는 VisualStudio 하위 키입니다.

참고

대부분의 경우 메트릭 HKEY_LOCAL_MACHINE 키에 기록 됩니다.그러나 때로는 HKEY_CURRENT_USER 키 대상 됩니다.Dbgmetric.lib 두 키를 처리합니다.메트릭을 가져오는 경우 HKEY_CURRENT_USER 검색 한 첫 번째, 다음 HKEY_LOCAL_MACHINE입니다.메트릭을 설정 하는 경우 최상위 수준 키를 사용 하 여 매개 변수를 지정 합니다.

[레지스트리 키]\

  Software\

    Microsoft\

      VisualStudio\

        [버전 루트]\

          [메트릭 루트]\

            [메트릭 형식]\

              [메트릭] = [메트릭 값]

              [메트릭] = [메트릭 값]

              [메트릭] = [메트릭 값]

자리 표시자

설명

[레지스트리 키]

HKEY_CURRENT_USER 또는 HKEY_LOCAL_MACHINE

[버전 루트]

Visual Studio 버전 (예를 들어, 7.0, 7.1, 또는 8.0). 그러나이 루트를 사용 하 여 수정할 수도 있습니다 해당 /rootsuffix 전환 devenv.exe. VSIP에 대 한 버전 루트, 예를 들어, 8.0Exp 이므로이 한정자 Exp를 일반적입니다.

[메트릭 루트]

이 중 하나입니다 AD7Metrics 또는 AD7Metrics(Debug)dbgmetric.lib의 디버그 버전 사용 여부에 따라.

참고

Dbgmetric.lib를 사용 하는지 여부 디버그 및 릴리스 간에 차이가 있는 경우이 명명 규칙 준수 될 해야 합니다 버전에서 레지스트리를 반영 해야 합니다.

[메트릭 형식]

쓸 미터법의 종류: Engine, ExpressionEvaluator, SymbolProvider등. 모두에서 dbgmetric.h로 정의 된 metricTypeXXXX, 어디 XXXX 특정 유형의 이름입니다.

[메트릭]

메트릭을 설정에 값이 할당 될 수 있는 항목의 이름입니다. 실제 회사 메트릭을 메트릭 형식에 따라 달라 집니다.

[메트릭 값]

미터법에 할당 되는 값입니다. 값 (문자열, 숫자, 등)가 있어야 형식을 미터법에 따라 달라 집니다.

참고

모든 Guid 형식으로 저장 된 {GUID}.예를 들면 {123D150B-FA18-461C-B218-45B3E4589F9B}와 같습니다.

디버그 엔진

다음 디버그 엔진 메트릭 레지스트리에서 조직입니다. Engine디버그 엔진에 대 한 미터법 형식 이름으로 서 해당 [메트릭 형식] 위의 레지스트리 하위 트리에 있습니다.

Engine\

  [guid 엔진]\

    CLSID= [클래스 guid]

    [메트릭] = [메트릭 값]

    [메트릭] = [메트릭 값]

    [메트릭] = [메트릭 값]

    PortSupplier\

      0= [포트 공급자 guid]

      1= [포트 공급자 guid]

자리 표시자

설명

[엔진 guid]

디버그 엔진의 GUID입니다.

[클래스 guid]

이 디버그 엔진을 구현 하는 클래스의 GUID를 지정 합니다.

[포트 공급자 guid]

있는 경우 포트 공급자의 GUID입니다. 디버그 엔진 기본 포트 공급자를 사용 하 고 따라서 자신의 공급 업체를 지정 하지. 이 경우에 하위 키 PortSupplier 것입니다.

포트 공급자

다음 레지스트리에서 포트 공급자 메트릭을 조직입니다. PortSupplier포트 공급자에 대 한 미터법 형식 이름으로 서 해당 [메트릭 형식].

PortSupplier\

  [포트 공급자 guid]\

    CLSID= [클래스 guid]

    [메트릭] = [메트릭 값]

    [메트릭] = [메트릭 값]

자리 표시자

설명

[포트 공급자 guid]

포트 공급자의 GUID를

[클래스 guid]

이 포트 공급자를 구현 하는 클래스의 GUID를

기호 공급자

다음의 기호 협력 업체 메트릭스는 레지스트리에서 구성입니다. SymbolProvider미터법 형식 이름이 기호 공급자 및 해당 [메트릭 형식].

SymbolProvider\

  [공급자 guid 기호]\

    file\

      CLSID= [클래스 guid]

      [메트릭] = [메트릭 값]

      [메트릭] = [메트릭 값]

    metadata\

      CLSID= [클래스 guid]

      [메트릭] = [메트릭 값]

      [메트릭] = [메트릭 값]

자리 표시자

설명

[기호 공급자 guid]

기호 공급자의 GUID를

[클래스 guid]

이 기호 공급자를 구현 하는 클래스의 GUID를

식 계산기

다음의 식 계산기 메트릭 레지스트리에서 구성입니다. ExpressionEvaluator식 계산기는 미터법 형식 이름입니다 및 해당 [메트릭 형식].

참고

미터법 형식에 대 한 ExpressionEvaluator 식 계산기에 대 한 메트릭 변경 내용을 모두 적절 한 식 계산기 미터 기능을 통해 진행 될 것으로 간주 되는 dbgmetric.h에 정의 되어 있지 않습니다 (의 레이아웃은 ExpressionEvaluator dbgmetric.lib 안에 표시 되지 않도록 하위 키가 다소 복잡 한 것).

ExpressionEvaluator\

  [언어 guid]\

    [공급 업체 guid]\

      CLSID= [클래스 guid]

      [메트릭] = [메트릭 값]

      [메트릭] = [메트릭 값]

      Engine\

        0= [엔진 guid 디버그]

        1= [엔진 guid 디버그]

자리 표시자

설명

[언어 guid]

언어의 GUID

[공급 업체 guid]

공급 업체의 GUID

[클래스 guid]

이 식 계산기를 구현 하는 클래스의 GUID를

[디버그 엔진 guid]

계산 열이 사용 되는 디버그 엔진의 GUID

식 계산기를 확장

다음 레지스트리에서 식 계산기 확장 기준을 조직입니다. EEExtensions미터법 형식 이름 식 계산기 확장명입니다 및 해당 [메트릭 형식].

EEExtensions\

  [확장 guid]\

    [메트릭] = [메트릭 값]

    [메트릭] = [메트릭 값]

자리 표시자

설명

[확장 guid]

식 평가기 확장의 GUID

예외

다음 예외 기준을 레지스트리에서 조직입니다. Exception예외에 대 한 미터법 형식 이름으로 서 해당 [메트릭 형식].

Exception\

  [디버깅 엔진 guid]\

    [예외 형식]\

      [예외]\

        [메트릭] = [메트릭 값]

        [메트릭] = [메트릭 값]

      [예외]\

        [메트릭] = [메트릭 값]

        [메트릭] = [메트릭 값]

자리 표시자

설명

[디버그 엔진 guid]

예외를 지 원하는 디버그 엔진의 GUID입니다.

[예외 형식]

처리할 수 있는 예외 클래스를 식별 하는 하위 키에 대 한 일반 제목입니다. Typical names are C++ Exceptions, Win32 Exceptions, Common Language Runtime Exceptions, and Native Run-Time Checks. 이 이름에 사용자의 특정 클래스를 식별할 수도 사용 됩니다.

[예외]

예외 이름: 예를 들어, _com_error 또는 Control-Break. 이러한 이름은 특정 예외가 사용자에 게 확인 하도 사용 됩니다.

요구 사항

이러한 파일에는 있는 Microsoft Visual Studio 2010 SDK 설치 디렉터리 (기본적으로 [드라이브]\Program Files\Microsoft Visual Studio 2010 SDK\).

헤더: includes\dbgmetric.h

라이브러리: libs\ad2de.lib, libs\dbgmetric.lib

참고 항목

참조

API 참조 (Visual Studio 디버깅)