Partager via


IVsLanguageDebugInfo.ValidateBreakpointLocation, méthode

Valide la position donnée comme emplacement pour définir un point d'arrêt.

Espace de noms :  Microsoft.VisualStudio.TextManager.Interop
Assembly :  Microsoft.VisualStudio.TextManager.Interop (dans Microsoft.VisualStudio.TextManager.Interop.dll)

Syntaxe

'Déclaration
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

Paramètres

  • iLine
    Type : Int32

    [in] numéro de la ligne contenant le point d'arrêt.

  • iCol
    Type : Int32

    [in] numéro de la colonne contenant le point d'arrêt.

Valeur de retour

Type : Int32
Si la méthode réussit, elle retourne S_OK.En cas d'échec, un code d'erreur est retourné.

Notes

Signature de COM

De textmgr.idl :

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

Cette méthode valide la position donnée comme emplacement pour définir un point d'arrêt sans devoir charger le débogueur. Si l'emplacement est valide, l'étendue est terminée avec l'étendue de l'instruction à laquelle l'exécution cesserait. Si la position est connue pour ne pas contenir code, des retours S_FALSE de cette méthode. Si la méthode échoue, le point d'arrêt est défini, attendant la validation pendant le démarrage de débogueur.

Avertissement

Même si vous n'envisagez pas de prendre en charge la méthode d'ValidateBreakpointLocation mais votre langage prend en charge des points d'arrêt, vous devez appliquer cette méthode et retourner une étendue qui contient la ligne et la colonne spécifiées ; sinon, des points d'arrêt ne peuvent pas être définis n'importe où à l'exception de la ligne 1.Vous pouvez retourner E_NOTIMPL pour indiquer que vous ne prenez en charge pas sinon cette méthode mais l'étendue doit toujours être définie.L'exemple montre comment procéder.

Exemples

Voici un exemple partiel de la façon dont cette méthode peut être implémentée. Cet exemple montre comment définir l'étendue à une valeur par défaut afin que les points d'arrêt fonctionnent correctement.

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

Sécurité .NET Framework

Voir aussi

Référence

IVsLanguageDebugInfo Interface

Microsoft.VisualStudio.TextManager.Interop, espace de noms