Debugger2 介面

Debugger2 物件是用於質詢和管理偵錯工具以及要進行偵錯之程式的狀態。 Debugger2 物件會取代 Debugger 物件。

命名空間:  EnvDTE80
組件:  EnvDTE80 (在 EnvDTE80.dll 中)

語法

'宣告
<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")> _
Public Interface Debugger2 _
    Inherits Debugger
[GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface Debugger2 : Debugger
[GuidAttribute(L"8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface class Debugger2 : Debugger
[<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")>]
type Debugger2 =  
    interface
        interface Debugger
    end
public interface Debugger2 extends Debugger

Debugger2 型別會公開下列成員。

屬性

  名稱 說明
公用屬性 AllBreakpointsLastHit (繼承自 Debugger)。
公用屬性 AllBreakpointsLastHit 取得最後一次同時叫用的繫結中斷點集合。
公用屬性 BreakpointLastHit (繼承自 Debugger)。
公用屬性 BreakpointLastHit 取得最後一次叫用的中斷點。
公用屬性 Breakpoints (繼承自 Debugger)。
公用屬性 Breakpoints 取得中斷點集合。
公用屬性 CurrentMode (繼承自 Debugger)。
公用屬性 CurrentMode 傳回 IDE 內容中偵錯工具目前的模式。
公用屬性 CurrentProcess (繼承自 Debugger)。
公用屬性 CurrentProcess 取得或設定現用的處理序。
公用屬性 CurrentProgram (繼承自 Debugger)。
公用屬性 CurrentProgram 設定或傳回現用的程式。
公用屬性 CurrentStackFrame (繼承自 Debugger)。
公用屬性 CurrentStackFrame 取得或設定目前的堆疊框架 (Stack Frame)。
公用屬性 CurrentThread (繼承自 Debugger)。
公用屬性 CurrentThread 取得或設定目前正在偵錯的執行緒。
公用屬性 DebuggedProcesses (繼承自 Debugger)。
公用屬性 DebuggedProcesses 取得目前正在進行偵錯的處理序清單。
公用屬性 DTE (繼承自 Debugger)。
公用屬性 DTE 取得最上層的擴充性物件。
公用屬性 HexDisplayMode (繼承自 Debugger)。
公用屬性 HexDisplayMode 取得或設定值,指出運算式是以十六進位格式或是以十進位格式輸出。
公用屬性 HexInputMode (繼承自 Debugger)。
公用屬性 HexInputMode 取得或設定值,指出運算式是以十六進位格式或是以十進位格式進行評估。
公用屬性 Languages (繼承自 Debugger)。
公用屬性 Languages 取得偵錯工具所支援的語言清單。
公用屬性 LastBreakReason (繼承自 Debugger)。
公用屬性 LastBreakReason 取得最後一次程式中斷的原因。如果程式正在執行中,它會傳回 DBG_REASON_NONE
公用屬性 LocalProcesses (繼承自 Debugger)。
公用屬性 LocalProcesses 取得這部電腦上目前正在執行的處理序清單。
公用屬性 Parent (繼承自 Debugger)。
公用屬性 Parent 取得 Debugger2 物件 (DTE2) 的直接上層父物件。
公用屬性 Transports 取得所支援的偵錯傳輸集合。

回頁首

方法

  名稱 說明
公用方法 Break(Boolean) (繼承自 Debugger)。
公用方法 Break(Boolean) 使指定的處理序暫停執行,如此才能分析其目前的狀態。
公用方法 DetachAll() (繼承自 Debugger)。
公用方法 DetachAll() 從所有附加的程式中斷連結。
公用方法 ExecuteStatement(String, Int32, Boolean) (繼承自 Debugger)。
公用方法 ExecuteStatement(String, Int32, Boolean) 執行指定的陳述式。如果 TreatAsExpression 旗標為 true,則字串會解譯成運算式,而且輸出會傳送到 命令視窗
公用方法 GetExpression(String, Boolean, Int32) (繼承自 Debugger)。
公用方法 GetExpression(String, Boolean, Int32) 根據目前的堆疊框架評估運算式。如果運算式可以剖析但無法評估,則將會傳回物件,但它不包含有效值。
公用方法 GetExpression2 根據目前的堆疊框架評估運算式。如果運算式可以剖析但無法評估,則將會傳回物件,但它不包含有效值。
公用方法 GetProcesses 允許呼叫端從遠端機器取得處理序集合。
公用方法 Go(Boolean) (繼承自 Debugger)。
公用方法 Go(Boolean) 從目前的陳述式開始執行程式。
公用方法 RunToCursor(Boolean) (繼承自 Debugger)。
公用方法 RunToCursor(Boolean) 執行程式前往原始程式檔游標目前的位置。
公用方法 SetNextStatement() (繼承自 Debugger)。
公用方法 SetNextStatement() 根據游標在目前原始程式檔中的位置,設定下一個要執行的指令。
公用方法 StepInto(Boolean) (繼承自 Debugger)。
公用方法 StepInto(Boolean) 如果可以,逐步執行下一個函式呼叫。
公用方法 StepOut(Boolean) (繼承自 Debugger)。
公用方法 StepOut(Boolean) 跳出目前的函式。
公用方法 StepOver(Boolean) (繼承自 Debugger)。
公用方法 StepOver(Boolean) 不進入下一個函式呼叫。
公用方法 Stop(Boolean) (繼承自 Debugger)。
公用方法 Stop(Boolean) 停止偵錯並且終止所有附加的處理序或中斷它們的連結。
公用方法 TerminateAll() (繼承自 Debugger)。
公用方法 TerminateAll() 結束目前正在執行的所有偵錯處理序。
公用方法 WriteMinidump 如果這個函式是在中斷模式中偵錯某一程式,那麼它將建立目前偵錯工作階段的小型傾印 (Minidump)。

回頁首

備註

偵錯工具可透過 DTE2 物件的 Debugger 屬性使用,如以下範例所示。 每個開發環境執行個體可各自擁有一個偵錯工具物件。

範例

Imports EnvDTE
Imports System.Diagnostics

Public Module Module1
    'This function returns true if the debugger is actively debugging.

    Function IsDebugging() As Boolean
        Dim debugger As EnvDTE80.Debugger2
        debugger = DTE2.Debugger

        If (debugger Is Nothing) Then
            MsgBox("Debugger doesn't exist! Fatal error.")
            IsDebugging = false
        Else
            IsDebugging = (debugger.CurrentMode <> _
            dbgDebugMode.dbgDesignMode)
        End If
    End Function
End Module
// The following C++ program can be run from the command line.
// It detects whether an instance of Visual Studio is currently 
// running,and if so, prints a message stating whether its debugger
// is actively debugging.

#include <stdio.h>
#import "dte.olb" raw_interfaces_only named_guids
using namespace EnvDTE80;
int main(void)
{
    int nRet = 0;
    CoInitialize(NULL);
    IUnknownPtr pUnk;
    GetActiveObject(CLSID_DTE, NULL, &pUnk);
    if (pUnk == NULL) {
        printf ("No instance of Visual Studio is running.\n");
    }
    else {
        _DTEPtr pDTE = pUnk;
        if (pDTE) {
            DebuggerPtr pDebugger;
            if (SUCCEEDED(pDTE->get_Debugger(&pDebugger2)) && 
            pDebugger2
            != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger2->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }
    CoUninitialize();
    return nRet;
}

請參閱

參考

EnvDTE80 命名空間