Sdílet prostřednictvím


IVsLanguageDebugInfo.ValidateBreakpointLocation Method

Definition

Validates the given position as a place to set a breakpoint.

public:
 int ValidateBreakpointLocation(Microsoft::VisualStudio::TextManager::Interop::IVsTextBuffer ^ pBuffer, int iLine, int iCol, cli::array <Microsoft::VisualStudio::TextManager::Interop::TextSpan> ^ pCodeSpan);
public:
 int ValidateBreakpointLocation(Microsoft::VisualStudio::TextManager::Interop::IVsTextBuffer ^ pBuffer, int iLine, int iCol, Platform::Array <Microsoft::VisualStudio::TextManager::Interop::TextSpan> ^ pCodeSpan);
int ValidateBreakpointLocation(Microsoft::VisualStudio::TextManager::Interop::IVsTextBuffer const & pBuffer, int iLine, int iCol, std::Array <Microsoft::VisualStudio::TextManager::Interop::TextSpan> const & pCodeSpan);
public int ValidateBreakpointLocation (Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer pBuffer, int iLine, int iCol, Microsoft.VisualStudio.TextManager.Interop.TextSpan[] pCodeSpan);
abstract member ValidateBreakpointLocation : Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer * int * int * Microsoft.VisualStudio.TextManager.Interop.TextSpan[] -> int
Public Function ValidateBreakpointLocation (pBuffer As IVsTextBuffer, iLine As Integer, iCol As Integer, pCodeSpan As TextSpan()) As Integer

Parameters

pBuffer
IVsTextBuffer

[in] The IVsTextBuffer interface for the text buffer containing the breakpoint.

iLine
Int32

[in] Number of the line containing the breakpoint.

iCol
Int32

[in] Number of the column containing the breakpoint.

pCodeSpan
TextSpan[]

[out] Returns a span of text containing the extent of the statement at which execution would stop if the breakpoint were set.

Returns

If the method succeeds, it returns S_OK. If it fails, it returns an error code.

Examples

Here is a partial example of how this method can be implemented. This example shows how to set the span to a default value so breakpoints work properly.

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

Remarks

COM Signature

From textmgr.idl:

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

This method validates the given position as a place to set a breakpoint without having to load the debugger. If the location is valid, then the span is filled in with the extent of the statement at which execution would stop. If the position is known to not contain code, this method returns S_FALSE. If the method fails, the breakpoint is set, pending validation during the debugger startup.

Warning

Even if you do not intend to support the ValidateBreakpointLocation method but your language does support breakpoints, you must implement this method and return a span that contains the specified line and column; otherwise, breakpoints cannot be set anywhere except line 1. You can return E_NOTIMPL to indicate that you do not otherwise support this method but the span must always be set. The example shows how this can be done.

Applies to