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 (контекст) |
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);
}
}
}
}
Requirements
Заголовок: msdbg.h
Пространство имен: Microsoft.VisualStudio.Debugger.Interop
Сборка: Microsoft.VisualStudio.Debugger.Interop.dll