BP_LOCATION
Especifica el tipo de estructura utilizado para describir la ubicación del punto de interrupción.
Sintaxis
public struct BP_LOCATION {
public uint bpLocationType;
public IntPtr unionmember1;
public IntPtr unionmember2;
public IntPtr unionmember3;
public IntPtr unionmember4;
};
Miembros
bpLocationType
Valor de la enumeración BP_LOCATION_TYPE utilizada para interpretar la bpLocation
unión o los unionmemberX
miembros.
bpLocation
.bplocCodeFileLine
[Solo C++] Contiene la estructura BP_LOCATION_CODE_FILE_LINE si bpLocationType
= BPLT_CODE_FILE_LINE
.
bpLocation.bplocCodeFuncOffset
[Solo C++] Contiene la estructura BP_LOCATION_CODE_FUNC_OFFSET si bpLocationType
= BPLT_CODE_FUNC_OFFSET
.
bpLocation.bplocCodeContext
[Solo C++] Contiene la estructura BP_LOCATION_CODE_CONTEXT si bpLocationType
= BPLT_CODE_CONTEXT
.
bpLocation.bplocCodeString
[Solo C++] Contiene la estructura BP_LOCATION_CODE_STRING si bpLocationType
= BPLT_CODE_STRING
.
bpLocation.bplocCodeAddress
[Solo C++] Contiene la estructura BP_LOCATION_CODE_ADDRESS si bpLocationType
= BPLT_CODE_ADDRESS
.
bpLocation.bplocDataString
[Solo C++] Contiene la estructura BP_LOCATION_DATA_STRING si bpLocationType
= BPLT_DATA_STRING
.
bpLocation.bplocResolution
[Solo C++] Contiene la estructura BP_LOCATION_RESOLUTION si bpLocationType
= BPLT_RESOLUTION
.
unionmember1
[Solo C#] Vea Comentarios sobre cómo interpretar.
unionmember2
[Solo C#] Vea Comentarios sobre cómo interpretar.
unionmember3
[Solo C#] Vea Comentarios sobre cómo interpretar.
unionmember4
[Solo C#] Vea Comentarios sobre cómo interpretar.
Comentarios
Esta estructura es miembro de las estructuras BP_REQUEST_INFO y BP_REQUEST_INFO2 .
[Solo C#] Los unionmemberX
miembros se interpretan según la tabla siguiente. Busque en la columna izquierda el bpLocationType
valor y, a continuación, examine las demás columnas para determinar qué representa cada unionmemberX
miembro y serializa el correspondiente unionmemberX
. Vea el ejemplo para ver una manera de interpretar una parte de esta estructura en C#.
bpLocationType |
unionmember1 |
unionmember2 |
unionmember3 |
unionmember4 |
---|---|---|---|---|
BPLT_CODE_FILE_LINE |
string (un contexto) |
IDebugDocumentPosition2 | - | - |
BPLT_CODE_FUNC_OFFSET |
string (un contexto) |
IDebugFunctionPosition2 | - | - |
BPLT_CODE_CONTEXT |
IDebugCodeContext2 | - | - | - |
BPLT_CODE_STRING |
string (un contexto) |
string (expresión condicional) |
- | - |
BPLT_CODE_ADDRESS |
string (un contexto) |
string (dirección URL del módulo) |
string (nombre de función) |
string (dirección) |
BPLT_DATA_STRING |
IDebugThread2 | string (un contexto) |
string (expresión de datos) |
uint (número de elementos) |
BPLT_RESOLUTION |
IDebugBreakpointResolution2 | - | - | - |
Ejemplo
En este ejemplo se muestra cómo interpretar la BP_LOCATION
estructura en C# para el BPLT_DATA_STRING
tipo . Este tipo en particular muestra cómo interpretar los cuatro unionmemberX
miembros en todos los formatos posibles (objeto, cadena y número).
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);
}
}
}
}
Requisitos
Encabezado: msdbg.h
Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop
Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll