Partager via


Debugger2.CurrentProgram Property

Definition

Sets or returns the active program.

public:
 property EnvDTE::Program ^ CurrentProgram { EnvDTE::Program ^ get(); void set(EnvDTE::Program ^ value); };
public:
 property EnvDTE::Program ^ CurrentProgram { EnvDTE::Program ^ get(); void set(EnvDTE::Program ^ value); };
[System.Runtime.InteropServices.DispId(104)]
public EnvDTE.Program CurrentProgram { [System.Runtime.InteropServices.DispId(104)] get; [System.Runtime.InteropServices.DispId(104)] set; }
[<System.Runtime.InteropServices.DispId(104)>]
[<get: System.Runtime.InteropServices.DispId(104)>]
[<set: System.Runtime.InteropServices.DispId(104)>]
member this.CurrentProgram : EnvDTE.Program with get, set
Public Property CurrentProgram As Program

Property Value

A Program object.

Implements

Attributes

Examples

Sub DumpStacks()  
    ' This macro dumps the stack for each thread   
    ' running in the current program to the   
    ' Command window.  The output format is identical   
    ' to that of the call-stack window except the current  
    ' line is not printed.  
    Dim d As EnvDTE80.Debugger2  
    d = DTE2.Debugger  
    Dim ow As CommandWindow  
    ow = DTE2.Windows.Item(Constants.vsWindowKindCommandWindow).Object  

    If d.CurrentProgram Is Nothing Then  
        ow.OutputString("No program is currently being debugged." + _  
        vbCrLf)  
    Else  
        Dim MyThread As Thread  
        ow.OutputString("Current Program: " + d.CurrentProgram.Name + _  
        vbCrLf)  

        For Each MyThread In d.CurrentProgram.Threads  
            ow.OutputString("" + vbTab + "Thread _  
            (" + Str(MyThread.ID) + " ) " + MyThread.Name + vbCrLf)  

            Dim MyFrame As EnvDTE.StackFrame  
            For Each MyFrame In MyThread.StackFrames  
                Dim strModule As String  
                Dim pos As Integer = InStrRev(MyFrame.Module, "\")  
                If pos > 0 Then  
                    strModule = Right(MyFrame.Module, _  
                    Len(MyFrame.Module) - pos)  
                Else  
                    strModule = MyFrame.Module  
                End If  

                Dim strFName As String = MyFrame.FunctionName  
                'Create the argument list.  
                Dim strArgs As String  
                Dim MyArg As Expression  
                Dim i = 0  
                For Each MyArg In MyFrame.Arguments  
                    If i > 0 Then  
                        strArgs = strArgs + ", "  
                    End If  
                    strArgs = strArgs + MyArg.Type + " " + _  
                    MyArg.Name + "=" + MyArg.Value  
                    i = i + 1  
                Next  
                'Output the frame information.  
                ow.OutputString("" + vbTab + vbTab + strModule + ": _  
                " + strFName + "(" + strArgs + ")" + vbCrLf)  
            Next  
        Next  
    End If  
End Sub  

Remarks

The active program is the program that defines the data displayed by the debugger. Although the debugger supports debugging more than one process at a time, only one process can be active at any given time. See Debugging Multiple Programs for more information.

Applies to