BP_LOCATION
Specifica il tipo di struttura utilizzata per descrivere la posizione del punto di interruzione.
Sintassi
public struct BP_LOCATION {
public uint bpLocationType;
public IntPtr unionmember1;
public IntPtr unionmember2;
public IntPtr unionmember3;
public IntPtr unionmember4;
};
Membri
bpLocationType
Valore dell'enumerazione BP_LOCATION_TYPE utilizzata per interpretare l'unione bpLocation
o i unionmemberX
membri.
bpLocation
.bplocCodeFileLine
[solo C++] Contiene la struttura BP_LOCATION_CODE_FILE_LINE se = bpLocationType
BPLT_CODE_FILE_LINE
.
bpLocation.bplocCodeFuncOffset
[solo C++] Contiene la struttura BP_LOCATION_CODE_FUNC_OFFedizione Standard T se = bpLocationType
BPLT_CODE_FUNC_OFFSET
.
bpLocation.bplocCodeContext
[solo C++] Contiene la struttura BP_LOCATION_CODE_CONTEXT se = bpLocationType
BPLT_CODE_CONTEXT
.
bpLocation.bplocCodeString
[solo C++] Contiene la struttura BP_LOCATION_CODE_STRING se = bpLocationType
BPLT_CODE_STRING
.
bpLocation.bplocCodeAddress
[solo C++] Contiene la struttura BP_LOCATION_CODE_ADDRESS se = bpLocationType
BPLT_CODE_ADDRESS
.
bpLocation.bplocDataString
[solo C++] Contiene la struttura BP_LOCATION_DATA_STRING se = bpLocationType
BPLT_DATA_STRING
.
bpLocation.bplocResolution
[solo C++] Contiene la struttura BP_LOCATION_RESOLUTION se = bpLocationType
BPLT_RESOLUTION
.
unionmember1
[Solo C#] Vedere La sezione Osservazioni su come interpretare.
unionmember2
[Solo C#] Vedere La sezione Osservazioni su come interpretare.
unionmember3
[Solo C#] Vedere La sezione Osservazioni su come interpretare.
unionmember4
[Solo C#] Vedere La sezione Osservazioni su come interpretare.
Osservazioni:
Questa struttura è un membro delle strutture BP_REQUEST_INFO e BP_REQUEST_INFO2 .
[Solo C#] I unionmemberX
membri vengono interpretati in base alla tabella seguente. Cercare nella colonna sinistra il bpLocationType
valore e quindi esaminare le altre colonne per determinare cosa rappresenta ogni unionmemberX
membro e effettuare il marshalling di unionmemberX
conseguenza. Vedere l'esempio per un modo per interpretare una parte di questa struttura in C#.
bpLocationType |
unionmember1 |
unionmember2 |
unionmember3 |
unionmember4 |
---|---|---|---|---|
BPLT_CODE_FILE_LINE |
string (contesto) |
IDebugDocumentPosition2 | - | - |
BPLT_CODE_FUNC_OFFSET |
string (contesto) |
IDebugFunctionPosition2 | - | - |
BPLT_CODE_CONTEXT |
IDebugCodeContext2 | - | - | - |
BPLT_CODE_STRING |
string (contesto) |
string (espressione condizionale) |
- | - |
BPLT_CODE_ADDRESS |
string (contesto) |
string (URL del modulo) |
string (nome della funzione) |
string (indirizzo) |
BPLT_DATA_STRING |
IDebugThread2 | string (contesto) |
string (espressione di dati) |
uint (numero di elementi) |
BPLT_RESOLUTION |
IDebugBreakpointResolution2 | - | - | - |
Esempio
Questo esempio illustra come interpretare la BP_LOCATION
struttura in C# per il BPLT_DATA_STRING
tipo . Questo particolare tipo mostra come interpretare tutti e quattro unionmemberX
i membri in tutti i formati possibili (oggetto, stringa e numero).
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);
}
}
}
}
Requisiti
Intestazione: msdbg.h
Spazio dei nomi: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll