Compartir a través de


IVsLanguageDebugInfo.ValidateBreakpointLocation (Método)

Valida la posición especificada como un lugar para establecer un punto de interrupción.

Espacio de nombres:  Microsoft.VisualStudio.TextManager.Interop
Ensamblado:  Microsoft.VisualStudio.TextManager.Interop (en Microsoft.VisualStudio.TextManager.Interop.dll)

Sintaxis

'Declaración
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

Parámetros

  • iLine
    Tipo: Int32

    [in] número de la línea que contiene el punto de interrupción.

  • iCol
    Tipo: Int32

    [in] número de la columna que contiene el punto de interrupción.

Valor devuelto

Tipo: Int32
si el método tiene éxito, devuelve S_OK.Si se produce un error, devuelve un código de error.

Comentarios

Prototipo COM

de textmgr.idl:

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

Este método valida la posición especificada como un lugar para establecer un punto de interrupción sin tener que cargar el depurador. Si la ubicación es válida, el intervalo se completa con la extensión de la instrucción en la que la ejecución detendría. Si la posición se sabe que no contener código, este método devuelve S_FALSE. Si el método, el punto de interrupción se establece, hasta que finalice la validación durante el inicio del depurador.

Advertencia

Incluso si no piensa admitir el método de ValidateBreakpointLocation pero el lenguaje admite puntos de interrupción, debe implementar este método y devolver un intervalo que contenga la línea y la columna especificadas; si no, los puntos de interrupción no se pueden establecer en cualquier lugar excepto la línea 1.Puede devolver E_NOTIMPL para indicar que no admite de otra manera este método pero el intervalo debe establecerse siempre.El ejemplo muestra cómo realizar esto.

Ejemplos

A continuación se muestra un ejemplo parcial de cómo este método se puede implementar. En este ejemplo se muestra cómo establecer el intervalo en un valor predeterminado para que los puntos de interrupción funciona correctamente.

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;
        }
    }
}

Seguridad de .NET Framework

Vea también

Referencia

IVsLanguageDebugInfo Interfaz

Microsoft.VisualStudio.TextManager.Interop (Espacio de nombres)