BP_LOCATION
指定用于描述断点位置的结构类型。
语法
public struct BP_LOCATION {
public uint bpLocationType;
public IntPtr unionmember1;
public IntPtr unionmember2;
public IntPtr unionmember3;
public IntPtr unionmember4;
};
成员
bpLocationType
用于解释联合或unionmemberX
成员的BP_LOCATION_TYPE枚举中的值。bpLocation
bpLocation
.bplocCodeFileLine
[仅限 C++]包含BP_LOCATION_CODE_FILE_LINE结构(如果BPLT_CODE_FILE_LINE
bpLocationType
= )。
bpLocation.bplocCodeFuncOffset
[仅限 C++]包含 BP_LOCATION_CODE_FUNC_OFF标准版T 结构(如果 bpLocationType
BPLT_CODE_FUNC_OFFSET
= )。
bpLocation.bplocCodeContext
[仅限 C++]包含BP_LOCATION_CODE_CONTEXT结构(如果BPLT_CODE_CONTEXT
bpLocationType
= )。
bpLocation.bplocCodeString
[仅限 C++]包含BP_LOCATION_CODE_STRING结构(如果BPLT_CODE_STRING
bpLocationType
= )。
bpLocation.bplocCodeAddress
[仅限 C++]包含BP_LOCATION_CODE_ADDRESS结构(如果BPLT_CODE_ADDRESS
bpLocationType
= )。
bpLocation.bplocDataString
[仅限 C++]包含BP_LOCATION_DATA_STRING结构(如果BPLT_DATA_STRING
bpLocationType
= )。
bpLocation.bplocResolution
[仅限 C++]包含BP_LOCATION_RESOLUTION结构(如果BPLT_RESOLUTION
bpLocationType
= )。
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 | - | - | - |
示例
此示例演示如何解释 BP_LOCATION
该类型的 C# BPLT_DATA_STRING
中的结构。 此特定类型演示如何以所有可能的格式(对象、字符串和数字)解释所有四 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