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_LINEbpLocationType = )。

bpLocation.bplocCodeFuncOffset
[仅限 C++]包含 BP_LOCATION_CODE_FUNC_OFF标准版T 结构(如果 bpLocationTypeBPLT_CODE_FUNC_OFFSET = )。

bpLocation.bplocCodeContext
[仅限 C++]包含BP_LOCATION_CODE_CONTEXT结构(如果BPLT_CODE_CONTEXTbpLocationType = )。

bpLocation.bplocCodeString
[仅限 C++]包含BP_LOCATION_CODE_STRING结构(如果BPLT_CODE_STRINGbpLocationType = )。

bpLocation.bplocCodeAddress
[仅限 C++]包含BP_LOCATION_CODE_ADDRESS结构(如果BPLT_CODE_ADDRESSbpLocationType = )。

bpLocation.bplocDataString
[仅限 C++]包含BP_LOCATION_DATA_STRING结构(如果BPLT_DATA_STRINGbpLocationType = )。

bpLocation.bplocResolution
[仅限 C++]包含BP_LOCATION_RESOLUTION结构(如果BPLT_RESOLUTIONbpLocationType = )。

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 - - -

示例

此示例演示如何解释 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

另请参阅