Condividi tramite


BP_LOCATION

Specifica il tipo di struttura utilizzato per descrivere la posizione del punto di interruzione.

typedef struct _BP_LOCATION {
   BP_LOCATION_TYPE bpLocationType;
   union {
      BP_LOCATION_CODE_FILE_LINE   bplocCodeFileLine;
      BP_LOCATION_CODE_FUNC_OFFSET bplocCodeFuncOffset;
      BP_LOCATION_CODE_CONTEXT     bplocCodeContext;
      BP_LOCATION_CODE_STRING      bplocCodeString;
      BP_LOCATION_CODE_ADDRESS     bplocCodeAddress;
      BP_LOCATION_DATA_STRING      bplocDataString;
      BP_LOCATION_RESOLUTION       bplocResolution;
      DWORD                        unused;
   } bpLocation;
} BP_LOCATION;
public struct BP_LOCATION {
   public uint   bpLocationType;
   public IntPtr unionmember1;
   public IntPtr unionmember2;
   public IntPtr unionmember3;
   public IntPtr unionmember4;
};

Membri

  • bpLocationType
    Un valore BP_LOCATION_TYPE dell'enumerazione utilizzata per interpretare l'unione di bpLocation o i membri di unionmemberX .

  • bpLocation.bplocCodeFileLine
    [C++ solo] contiene BP_LOCATION_CODE_FILE_LINE la struttura se bpLocationType = BPLT_CODE_FILE_LINE.

  • bpLocation.bplocCodeFuncOffset
    [C++ solo] contiene BP_LOCATION_CODE_FUNC_OFFSET la struttura se bpLocationType = BPLT_CODE_FUNC_OFFSET.

  • bpLocation.bplocCodeContext
    [C++ solo] contiene BP_LOCATION_CODE_CONTEXT la struttura se bpLocationType = BPLT_CODE_CONTEXT.

  • bpLocation.bplocCodeString
    [C++ solo] contiene BP_LOCATION_CODE_STRING la struttura se bpLocationType = BPLT_CODE_STRING.

  • bpLocation.bplocCodeAddress
    [C++ solo] contiene BP_LOCATION_CODE_ADDRESS la struttura se bpLocationType = BPLT_CODE_ADDRESS.

  • bpLocation.bplocDataString
    [C++ solo] contiene BP_LOCATION_DATA_STRING la struttura se bpLocationType = BPLT_DATA_STRING.

  • bpLocation.bplocResolution
    [C++ solo] contiene BP_LOCATION_RESOLUTION la struttura se bpLocationType = BPLT_RESOLUTION.

  • unionmember1
    [Solo c#] vedere le note su come interpretare.

  • unionmember2
    [Solo c#] vedere le note su come interpretare.

  • unionmember3
    [Solo c#] vedere le note su come interpretare.

  • unionmember4
    [Solo c#] vedere le note su come interpretare.

Note

Questa struttura è un membro BP_REQUEST_INFORMATION e BP_REQUEST_INFORMATION2 strutture.

[Solo c#] i membri di unionmemberX vengono interpretati nella seguente tabella. Cercare nella colonna sinistra per il valore e l'aspetto di bpLocationType tra le altre colonne per determinare quale ogni membro di unionmemberX rappresenta e il marshalling unionmemberX di conseguenza. Vedere l'esempio di una modalità dello schermo interpretino una parte di questa struttura in c#.

bpLocationType

unionmember1

unionmember2

unionmember3

unionmember4

BPLT_CODE_FILE_LINE

string (un contesto)

IDebugDocumentPosition2

-

-

BPLT_CODE_FUNC_OFFSET

string (un contesto)

IDebugFunctionPosition2

-

-

BPLT_CODE_CONTEXT

IDebugCodeContext2

-

-

-

BPLT_CODE_STRING

string (un contesto)

string (espressione condizionale)

-

-

BPLT_CODE_ADDRESS

string (un contesto)

string (modulo URL)

string (nome di funzione)

string (indirizzo)

BPLT_DATA_STRING

IDebugThread2

string (un contesto)

string (espressione di dati)

uint (numero di elementi)

BPLT_RESOLUTION

IDebugBreakpointResolution2

-

-

-

Esempio

In questo esempio viene illustrato come interpretare la struttura di BP_LOCATION in c# per il tipo di BPLT_DATA_STRING . In questo particolare tipo come interpretare tutti e quattro i membri di unionmemberX in tutti i formati possibili (oggetto, stringa e number).

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

Vedere anche

Riferimenti

Strutture e unioni

BP_REQUEST_INFORMATION

BP_LOCATION_CODE_FILE_LINE

BP_LOCATION_CODE_FUNC_OFFSET

BP_LOCATION_CODE_CONTEXT

BP_LOCATION_CODE_STRING

BP_LOCATION_CODE_ADDRESS

BP_LOCATION_DATA_STRING

BP_LOCATION_RESOLUTION