Condividi tramite


Metodo IVsLanguageDebugInfo.ValidateBreakpointLocation

Convalida la posizione specificata come posizione per impostare un punto di interruzione.

Spazio dei nomi:  Microsoft.VisualStudio.TextManager.Interop
Assembly:  Microsoft.VisualStudio.TextManager.Interop (in Microsoft.VisualStudio.TextManager.Interop.dll)

Sintassi

'Dichiarazione
Function ValidateBreakpointLocation ( _
    pBuffer As IVsTextBuffer, _
    iLine As Integer, _
    iCol As Integer, _
    <OutAttribute> pCodeSpan As TextSpan() _
) As Integer
int ValidateBreakpointLocation(
    IVsTextBuffer pBuffer,
    int iLine,
    int iCol,
    TextSpan[] pCodeSpan
)
int ValidateBreakpointLocation(
    [InAttribute] IVsTextBuffer^ pBuffer, 
    [InAttribute] int iLine, 
    [InAttribute] int iCol, 
    [OutAttribute] array<TextSpan>^ pCodeSpan
)
abstract ValidateBreakpointLocation : 
        pBuffer:IVsTextBuffer * 
        iLine:int * 
        iCol:int * 
        pCodeSpan:TextSpan[] byref -> int
function ValidateBreakpointLocation(
    pBuffer : IVsTextBuffer, 
    iLine : int, 
    iCol : int, 
    pCodeSpan : TextSpan[]
) : int

Parametri

  • iLine
    Tipo: Int32

    [in] Numero della riga contenente il punto di interruzione.

  • iCol
    Tipo: Int32

    [in] Numero della colonna che contiene il punto di interruzione.

Valore restituito

Tipo: Int32
Se il metodo ha esito positivo, restituisce S_OK.Se non riesce, restituisce un codice di errore.

Note

Firma COM

da textmgr.idl:

HRESULT IVsLanguageDebugInfo::ValidateBreakpointLocation(
   [in] IVsTextBuffer *pBuffer, 
   [in] long iLine, 
   [in] long iCol, ]
   [out] TextSpan *pCodeSpan
);

Questo metodo convalida la posizione specificata come posizione per impostare un punto di interruzione senza che sia necessario caricare il debugger. Se la posizione è valida, pertanto l'intervallo viene riempita con ambito dell'istruzione nel quale l'esecuzione si arresterebbe. Se il percorso è conosciuto non contengano il codice, questo metodo restituisce S_FALSE. Se il metodo non riesce, il punto di interruzione è impostato, in attesa di convalida durante l'avvio del debugger.

Avviso

Anche se non si intende supportare ValidateBreakpointLocation il metodo ma il linguaggio supporta i punti di interruzione, è necessario implementare questo metodo e restituire un intervallo che contiene la riga e la colonna specificata; in caso contrario, i punti di interruzione non possono essere impostati in qualsiasi posizione eccetto la riga 1.È possibile restituire E_NOTIMPL per indicare che non supportate in caso contrario questo metodo ma l'intervallo è necessario impostare sempre.Nell'esempio viene illustrata tale operazione.

Esempi

Di seguito è riportato un esempio parziale di come questo metodo può essere implementato. In questo esempio viene illustrato come impostare l'intervallo a un valore predefinito in modo dai punti di interruzione vengono eseguiti correttamente.

using Microsoft.VisualStudio;
using Microsoft.VisualStudio.TextManager.Interop;

namespace MyLanguagePackage
{
    public class MyLanguageService : IVsLanguageInfo, IVsLanguageDebugInfo
    {
        public int ValidateBreakpointLocation(IVsTextBuffer buffer,
                                              int line,
                                              int col,
                                              TextSpan[] pCodeSpan)
        {
            int retval = VSConstants.E_NOTIMPL;
            if (pCodeSpan != null)
            {
                // Make sure the span is set to at least the current
                // position by default.
                pCodeSpan[0].iStartLine = line;
                pCodeSpan[0].iStartIndex = col;
                pCodeSpan[0].iEndLine = line;
                pCodeSpan[0].iEndIndex = col;
            }
            if (buffer != null)
            {
                // Use your parser to obtain the span that describes the
                // the code containing the specified position.  If the span
                // is valid, return S_OK with the valid span; otherwise,
                // returns S_FALSE (leaving the default span alone).
                //
                // GetCodeSpanForLocation() is a helper function not shown.
                retval = VSConstants.S_FALSE;
                TextSpan span = new TextSpan();
                if (GetCodeSpanForLocation(buffer, line, col, out span))
                {
                    pCodeSpan[0] = span;
                    retval = VSConstants.S_OK;
                }
            }
            return retval;
        }
    }
}

Sicurezza di .NET Framework

Vedere anche

Riferimenti

IVsLanguageDebugInfo Interfaccia

Spazio dei nomi Microsoft.VisualStudio.TextManager.Interop