指定用于结构的类型描述断点的位置。
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_INFO 和 BP_REQUEST_INFO2 结构的成员。
[仅限于 c#] unionmemberX 成员根据下表解释。 查找在左列下为 bpLocationType 值和其他列之间找到确定每个 unionmemberX 成员表示并相应地排列 unionmemberX 。 请参见下面的示例中的方式解释此结构的一部分 (在 c# 中)
bpLocationType |
unionmember1 |
unionmember2 |
unionmember3 |
unionmember4 |
---|---|---|---|---|
BPLT_CODE_FILE_LINE |
string (上下文) |
- |
- |
|
BPLT_CODE_FUNC_OFFSET |
string (上下文) |
- |
- |
|
BPLT_CODE_CONTEXT |
- |
- |
- |
|
BPLT_CODE_STRING |
string (上下文) |
string (条件表达式) |
- |
- |
BPLT_CODE_ADDRESS |
string (上下文) |
string (模块的 URL) |
string (函数名) |
string (地址) |
BPLT_DATA_STRING |
string (上下文) |
string (数据表达式) |
uint (元素的数字) |
|
BPLT_RESOLUTION |
- |
- |
- |
示例
此示例演示如何解释 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