Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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