다음을 통해 공유


BP_LOCATION

중단점의 위치를 설명하는 데 사용되는 구조체의 형식을 지정합니다.

구문

public struct BP_LOCATION {
    public uint   bpLocationType;
    public IntPtr unionmember1;
    public IntPtr unionmember2;
    public IntPtr unionmember3;
    public IntPtr unionmember4;
};

멤버

bpLocationType
bpLocation 공용 구조체 또는 unionmemberX 멤버를 해석하는 데 사용되는 BP_LOCATION_TYPE 열거형의 값입니다.

bpLocation.bplocCodeFileLine
[C++에만 해당] bpLocationType = BPLT_CODE_FILE_LINE인 경우 BP_LOCATION_CODE_FILE_LINE 구조체를 포함합니다.

bpLocation.bplocCodeFuncOffset
[C++에만 해당] bpLocationType = BPLT_CODE_FUNC_OFFSET인 경우 BP_LOCATION_CODE_FUNC_OFFSET 구조체를 포함합니다.

bpLocation.bplocCodeContext
[C++에만 해당] bpLocationType = BPLT_CODE_CONTEXT인 경우 BP_LOCATION_CODE_CONTEXT 구조체를 포함합니다.

bpLocation.bplocCodeString
[C++에만 해당] bpLocationType = BPLT_CODE_STRING인 경우 BP_LOCATION_CODE_STRING 구조체를 포함합니다.

bpLocation.bplocCodeAddress
[C++에만 해당] bpLocationType = BPLT_CODE_ADDRESS인 경우 BP_LOCATION_CODE_ADDRESS 구조체를 포함합니다.

bpLocation.bplocDataString
[C++에만 해당] bpLocationType = BPLT_DATA_STRING인 경우 BP_LOCATION_DATA_STRING 구조체를 포함합니다.

bpLocation.bplocResolution
[C++에만 해당] bpLocationType = BPLT_RESOLUTION인 경우 BP_LOCATION_RESOLUTION 구조체를 포함합니다.

unionmember1
[C#에만 해당] 해석 방법에 대한 설명을 참조하세요.

unionmember2
[C#에만 해당] 해석 방법에 대한 설명을 참조하세요.

unionmember3
[C#에만 해당] 해석 방법에 대한 설명을 참조하세요.

unionmember4
[C#에만 해당] 해석 방법에 대한 설명을 참조하세요.

설명

이 구조체는 BP_REQUEST_INFOBP_REQUEST_INFO2 구조체의 멤버입니다.

[C#에만 해당] unionmemberX 멤버는 다음 표에 따라 해석됩니다. bpLocationType 값의 왼쪽 열을 아래로 살펴본 다음 다른 열을 살펴보고 각 unionmemberX 멤버가 나타내는 내용을 확인하고 그에 따라 unionmemberX를 마샬링합니다. C#에서 이 구조체의 일부를 해석하는 방법은 예제를 참조하세요.

bpLocationType unionmember1 unionmember2 unionmember3 unionmember4
BPLT_CODE_FILE_LINE string(컨텍스트) IDebugDocumentPosition2 - -
BPLT_CODE_FUNC_OFFSET string(컨텍스트) IDebugFunctionPosition2 - -
BPLT_CODE_CONTEXT IDebugCodeContext2 - - -
BPLT_CODE_STRING string(컨텍스트) string(조건식) - -
BPLT_CODE_ADDRESS string(컨텍스트) string(모듈 URL) string(함수 이름) string(주소)
BPLT_DATA_STRING IDebugThread2 string(컨텍스트) string(데이터 식) uint(요소의 수)
BPLT_RESOLUTION IDebugBreakpointResolution2 - - -

예시

이 예제에서는 BPLT_DATA_STRING 형식에 대해 C#에서 BP_LOCATION 구조체를 해석하는 방법을 보여 줍니다. 이 특정 형식은 가능한 모든 형식(개체, 문자열, 숫자)으로 네 unionmemberX 멤버를 모두 해석하는 방법을 보여 줍니다.

using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;

namespace MyPackage
{
    public class MyClass
    {
        public void Interpret(BP_LOCATION bp)
        {
            if (bp.bpLocationType == (uint)enum_BP_LOCATION_TYPE.BPLT_DATA_STRING)
            {
                IDebugThread2 pThread = (IDebugThread2)Marshal.GetObjectForIUnknown(bp.unionmember1);
                string context = Marshal.PtrToStringBSTR(bp.unionmember2);
                string dataExpression = Marshal.PtrToStringBSTR(bp.unionmember3);
                uint numElements = (uint)Marshal.ReadInt32(bp.unionmember4);
            }
        }
    }
}

요구 사항

헤더: msdbg.h

네임스페이스: Microsoft.VisualStudio.Debugger.Interop

어셈블리: Microsoft.VisualStudio.Debugger.Interop.dll

참고 항목