Udostępnij za pośrednictwem


BP_LOCATION

Określa typ struktury używanej do opisywania lokalizacji punktu przerwania.

Składnia

public struct BP_LOCATION {
    public uint   bpLocationType;
    public IntPtr unionmember1;
    public IntPtr unionmember2;
    public IntPtr unionmember3;
    public IntPtr unionmember4;
};

Członkowie

bpLocationType
Wartość z wyliczenia BP_LOCATION_TYPE używanego bpLocation do interpretowania unii lub unionmemberX członków.

bpLocation.bplocCodeFileLine
[Tylko C++ ] Zawiera strukturę BP_LOCATION_CODE_FILE_LINE , jeśli bpLocationType = BPLT_CODE_FILE_LINE.

bpLocation.bplocCodeFuncOffset
[Tylko C++ ] Zawiera strukturę BP_LOCATION_CODE_FUNC_OFFSET , jeśli bpLocationType = BPLT_CODE_FUNC_OFFSET.

bpLocation.bplocCodeContext
[Tylko C++ ] Zawiera strukturę BP_LOCATION_CODE_CONTEXT , jeśli bpLocationType = BPLT_CODE_CONTEXT.

bpLocation.bplocCodeString
[Tylko C++ ] Zawiera strukturę BP_LOCATION_CODE_STRING , jeśli bpLocationType = BPLT_CODE_STRING.

bpLocation.bplocCodeAddress
[Tylko C++ ] Zawiera strukturę BP_LOCATION_CODE_ADDRESS , jeśli bpLocationType = BPLT_CODE_ADDRESS.

bpLocation.bplocDataString
[Tylko C++ ] Zawiera strukturę BP_LOCATION_DATA_STRING , jeśli bpLocationType = BPLT_DATA_STRING.

bpLocation.bplocResolution
[Tylko C++ ] Zawiera strukturę BP_LOCATION_RESOLUTION , jeśli bpLocationType = BPLT_RESOLUTION.

unionmember1
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

unionmember2
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

unionmember3
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

unionmember4
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

Uwagi

Ta struktura jest elementem członkowskim struktur BP_REQUEST_INFO i BP_REQUEST_INFO2 .

[Tylko C# ] Składowe unionmemberX są interpretowane zgodnie z poniższą tabelą. Przyjrzyj się lewej kolumnie wartości bpLocationType , a następnie przyjrzyj się pozostałym kolumnom, aby określić, co reprezentuje każdy unionmemberX element członkowski i odpowiednio przeprowadzić marshaling unionmemberX . Zobacz przykład sposobu interpretowania części tej struktury w języku C#.

bpLocationType unionmember1 unionmember2 unionmember3 unionmember4
BPLT_CODE_FILE_LINE string (kontekst) IDebugDocumentPosition2 - -
BPLT_CODE_FUNC_OFFSET string (kontekst) IDebugFunctionPosition2 - -
BPLT_CODE_CONTEXT IDebugCodeContext2 - - -
BPLT_CODE_STRING string (kontekst) string (wyrażenie warunkowe) - -
BPLT_CODE_ADDRESS string (kontekst) string (adres URL modułu) string (nazwa funkcji) string (adres)
BPLT_DATA_STRING IDebugThread2 string (kontekst) string (wyrażenie danych) uint (liczba elementów)
BPLT_RESOLUTION IDebugBreakpointResolution2 - - -

Przykład

W tym przykładzie pokazano, jak interpretować BP_LOCATION strukturę w języku C# dla BPLT_DATA_STRING typu. Ten konkretny typ pokazuje, jak interpretować wszystkie cztery unionmemberX elementy członkowskie we wszystkich możliwych formatach (obiekt, ciąg i liczba).

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);
            }
        }
    }
}

Wymagania

Nagłówek: msdbg.h

Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop

Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll

Zobacz też