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