BP_LOCATION
Especifica o tipo de estrutura usada para descrever o local do ponto de interrupção.
Sintaxe
public struct BP_LOCATION {
public uint bpLocationType;
public IntPtr unionmember1;
public IntPtr unionmember2;
public IntPtr unionmember3;
public IntPtr unionmember4;
};
Membros
bpLocationType
Um valor da enumeração BP_LOCATION_TYPE usado para interpretar o bpLocation
sindicato ou os unionmemberX
membros.
bpLocation
.bplocCodeFileLine
[Somente C++] Contém a estrutura BP_LOCATION_CODE_FILE_LINE se bpLocationType
= BPLT_CODE_FILE_LINE
.
bpLocation.bplocCodeFuncOffset
[Somente C++] Contém a estrutura BP_LOCATION_CODE_FUNC_OFFSET se bpLocationType
= BPLT_CODE_FUNC_OFFSET
.
bpLocation.bplocCodeContext
[Somente C++] Contém a estrutura BP_LOCATION_CODE_CONTEXT se bpLocationType
= BPLT_CODE_CONTEXT
.
bpLocation.bplocCodeString
[Somente C++] Contém a estrutura BP_LOCATION_CODE_STRING se bpLocationType
= BPLT_CODE_STRING
.
bpLocation.bplocCodeAddress
[Somente C++] Contém a estrutura BP_LOCATION_CODE_ADDRESS se bpLocationType
= BPLT_CODE_ADDRESS
.
bpLocation.bplocDataString
[Somente C++] Contém a estrutura BP_LOCATION_DATA_STRING se bpLocationType
= BPLT_DATA_STRING
.
bpLocation.bplocResolution
[Somente C++] Contém a estrutura BP_LOCATION_RESOLUTION se bpLocationType
= BPLT_RESOLUTION
.
unionmember1
[Somente C#] Veja Observações sobre como interpretar.
unionmember2
[Somente C#] Veja Observações sobre como interpretar.
unionmember3
[Somente C#] Veja Observações sobre como interpretar.
unionmember4
[Somente C#] Veja Observações sobre como interpretar.
Comentários
Essa estrutura é um membro das estruturas BP_REQUEST_INFO e BP_REQUEST_INFO2 .
[Somente C#] Os unionmemberX
membros são interpretados de acordo com a tabela a seguir. Olhe para baixo na coluna esquerda para o valor e, em seguida, olhe para as outras colunas para determinar o que cada unionmemberX
membro representa e marechal o bpLocationType
unionmemberX
correspondente. Consulte o exemplo para obter uma maneira de interpretar uma parte dessa estrutura em C#.
bpLocationType |
unionmember1 |
unionmember2 |
unionmember3 |
unionmember4 |
---|---|---|---|---|
BPLT_CODE_FILE_LINE |
string (um contexto) |
IDebugDocumentPosition2 | - | - |
BPLT_CODE_FUNC_OFFSET |
string (um contexto) |
IDebugFunctionPosition2 | - | - |
BPLT_CODE_CONTEXT |
IDebugCodeContext2 | - | - | - |
BPLT_CODE_STRING |
string (um contexto) |
string (expressão condicional) |
- | - |
BPLT_CODE_ADDRESS |
string (um contexto) |
string (URL do módulo) |
string (nome da função) |
string (endereço) |
BPLT_DATA_STRING |
IDebugThread2 | string (um contexto) |
string (expressão de dados) |
uint (número de elementos) |
BPLT_RESOLUTION |
IDebugBreakpointResolution2 | - | - | - |
Exemplo
Este exemplo mostra como interpretar a BP_LOCATION
estrutura em C# para o BPLT_DATA_STRING
tipo. Esse tipo específico mostra como interpretar todos os quatro unionmemberX
membros em todos os formatos possíveis (objeto, cadeia de caracteres e 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
Cabeçalho: msdbg.h
Espaço para nome: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll