Поделиться через


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

См. также