共用方式為


Debugger 介面

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

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

語法

'宣告
<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")> _
Public Interface Debugger
[GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface Debugger
[GuidAttribute(L"338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface class Debugger
[<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")>]
type Debugger =  interface end
public interface Debugger

Debugger 型別會公開下列成員。

屬性

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

回頁首

方法

  名稱 說明
公用方法 Break 使指定的處理序暫停執行,如此才能分析其目前的狀態。
公用方法 DetachAll 從所有附加的程式中斷連結。
公用方法 ExecuteStatement 執行指定的陳述式。如果 TreatAsExpression 旗標為 true,字串會解譯為運算式,而輸出會傳送至命令視窗。
公用方法 GetExpression 根據目前的堆疊框架評估運算式。如果可剖析但無法評估運算式,物件會被傳回但將不具有效值。
公用方法 Go 從目前的陳述式開始執行程式。
公用方法 RunToCursor 執行程式前往原始程式檔游標目前的位置。
公用方法 SetNextStatement 根據游標在目前原始程式檔中的位置,設定下一個要執行的指令。
公用方法 StepInto 如果可以,逐步執行下一個函式呼叫。
公用方法 StepOut 跳出目前的函式。
公用方法 StepOver 不進入下一個函式呼叫。
公用方法 Stop 停止偵錯、結束,或是從所有附加的處理序中斷連結。
公用方法 TerminateAll 結束所有處理序。

回頁首

備註

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

範例

下列範例示範如何使用 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 EnvDTE.Debugger
        debugger = DTE.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 small 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 EnvDTE;

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(&pDebugger)) && pDebugger != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }

    CoUninitialize();

    return nRet;
}

請參閱

參考

EnvDTE 命名空間

其他資源

Automation 物件模型圖表

Visual Studio 偵錯