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_INFO 및 BP_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