BP_LOCATION

指定用于结构的类型描述断点的位置。

typedef struct _BP_LOCATION {
   BP_LOCATION_TYPE bpLocationType;
   union {
      BP_LOCATION_CODE_FILE_LINE   bplocCodeFileLine;
      BP_LOCATION_CODE_FUNC_OFFSET bplocCodeFuncOffset;
      BP_LOCATION_CODE_CONTEXT     bplocCodeContext;
      BP_LOCATION_CODE_STRING      bplocCodeString;
      BP_LOCATION_CODE_ADDRESS     bplocCodeAddress;
      BP_LOCATION_DATA_STRING      bplocDataString;
      BP_LOCATION_RESOLUTION       bplocResolution;
      DWORD                        unused;
   } bpLocation;
} BP_LOCATION;
public struct BP_LOCATION {
   public uint   bpLocationType;
   public IntPtr unionmember1;
   public IntPtr unionmember2;
   public IntPtr unionmember3;
   public IntPtr unionmember4;
};

成员

  • bpLocationType
    从使用的 BP_LOCATION_TYPE 枚举的值解释 bpLocation 联合或 unionmemberX 成员。

  • bpLocation.bplocCodeFileLine
    只有 C++ [] 包含 BP_LOCATION_CODE_FILE_LINE 结构,如果 bpLocationType = BPLT_CODE_FILE_LINE

  • bpLocation.bplocCodeFuncOffset
    只有 C++ [] 包含 BP_LOCATION_CODE_FUNC_OFFSET 结构,如果 bpLocationType = BPLT_CODE_FUNC_OFFSET

  • bpLocation.bplocCodeContext
    只有 C++ [] 包含 BP_LOCATION_CODE_CONTEXT 结构,如果 bpLocationType = BPLT_CODE_CONTEXT

  • bpLocation.bplocCodeString
    只有 C++ [] 包含 BP_LOCATION_CODE_STRING 结构,如果 bpLocationType = BPLT_CODE_STRING

  • bpLocation.bplocCodeAddress
    只有 C++ [] 包含 BP_LOCATION_CODE_ADDRESS 结构,如果 bpLocationType = BPLT_CODE_ADDRESS

  • bpLocation.bplocDataString
    只有 C++ [] 包含 BP_LOCATION_DATA_STRING 结构,如果 bpLocationType = BPLT_DATA_STRING

  • bpLocation.bplocResolution
    只有 C++ [] 包含 BP_LOCATION_RESOLUTION 结构,如果 bpLocationType = BPLT_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

-

-

-

示例

此示例演示如何解释 c# 中 BP_LOCATION framework 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

请参见

参考

结构和联合

BP_REQUEST_INFO

BP_LOCATION_CODE_FILE_LINE

BP_LOCATION_CODE_FUNC_OFFSET

BP_LOCATION_CODE_CONTEXT

BP_LOCATION_CODE_STRING

BP_LOCATION_CODE_ADDRESS

BP_LOCATION_DATA_STRING

BP_LOCATION_RESOLUTION