Debugger3 介面

Debugger3 是用來質詢和管理偵錯工具以及要進行偵錯之程式的狀態。 Debugger3 會取代 Debugger2Debugger 介面。

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

語法

'宣告
<GuidAttribute("87DFC8DA-67B4-4954-BB89-6A277A50BAFC")> _
Public Interface Debugger3 _
    Inherits Debugger2
[GuidAttribute("87DFC8DA-67B4-4954-BB89-6A277A50BAFC")]
public interface Debugger3 : Debugger2
[GuidAttribute(L"87DFC8DA-67B4-4954-BB89-6A277A50BAFC")]
public interface class Debugger3 : Debugger2
[<GuidAttribute("87DFC8DA-67B4-4954-BB89-6A277A50BAFC")>]
type Debugger3 =  
    interface
        interface Debugger2
    end
public interface Debugger3 extends Debugger2

Debugger3 型別會公開下列成員。

屬性

  名稱 說明
公用屬性 AllBreakpointsLastHit (繼承自 Debugger2)。
公用屬性 AllBreakpointsLastHit 取得最後一次同時叫用的繫結中斷點集合。
公用屬性 BreakpointLastHit (繼承自 Debugger2)。
公用屬性 BreakpointLastHit 取得最後一次叫用的中斷點。
公用屬性 Breakpoints (繼承自 Debugger2)。
公用屬性 Breakpoints 取得中斷點集合。
公用屬性 CurrentMode (繼承自 Debugger2)。
公用屬性 CurrentMode 傳回 IDE 內容中偵錯工具目前的模式。
公用屬性 CurrentProcess (繼承自 Debugger2)。
公用屬性 CurrentProcess 取得或設定現用的處理序。
公用屬性 CurrentProgram (繼承自 Debugger2)。
公用屬性 CurrentProgram 設定或傳回現用的程式。
公用屬性 CurrentStackFrame (繼承自 Debugger2)。
公用屬性 CurrentStackFrame 取得或設定目前的堆疊框架 (Stack Frame)。
公用屬性 CurrentThread (繼承自 Debugger2)。
公用屬性 CurrentThread 取得或設定目前正在偵錯的執行緒。
公用屬性 DebuggedProcesses (繼承自 Debugger2)。
公用屬性 DebuggedProcesses 取得正在進行偵錯的處理序清單。
公用屬性 DTE (繼承自 Debugger2)。
公用屬性 DTE 取得最上層的擴充性物件。
公用屬性 ExceptionGroups 取得偵錯工具的例外狀況 (Exception) 設定。對於每個例外狀況而言,這些設定會決定偵錯工具是否會先讓程式碼處理例外狀況,再讓偵錯工具中斷執行。
公用屬性 ForceContinue 取得或設定值,這個值會決定當追蹤點或中斷點執行巨集完成時,偵錯工具要中斷或繼續執行。建立追蹤點或中斷點時,使用者必須在對話方塊中設定預設的行為。這個屬性可用來變更此預設行為。
公用屬性 HexDisplayMode (繼承自 Debugger2)。
公用屬性 HexDisplayMode 取得或設定值,這個值表示運算式是以十六進位格式輸出,還是以十進位格式輸出。
公用屬性 HexInputMode (繼承自 Debugger2)。
公用屬性 HexInputMode 取得或設定值,這個值表示運算式是以十六進位格式來評估,還是以十進位格式來評估。
公用屬性 Languages (繼承自 Debugger2)。
公用屬性 Languages 取得偵錯工具所支援的語言清單。
公用屬性 LastBreakReason (繼承自 Debugger2)。
公用屬性 LastBreakReason 取得最後一次程式中斷的原因。如果程式正在執行中,它會傳回 DBG_REASON_NONE
公用屬性 LocalProcesses (繼承自 Debugger2)。
公用屬性 LocalProcesses 取得這部電腦上目前正在執行的處理序清單。
公用屬性 OnlyLoadSymbolsManually 取得值,這個值會判斷要手動或自動載入符號。Visual Studio 使用者可以在 [選項] 對話方塊中決定此項設定。如需如何使用 Visual Studio 設定這個值的詳細資訊,請參閱 HOW TO:指定符號位置和載入行為
公用屬性 Parent (繼承自 Debugger2)。
公用屬性 Parent 取得 Debugger3 物件的直接上層父物件 (DTE2)。
公用屬性 SymbolCachePath 取得字串,其中包含當您從符號伺服器下載符號時,Visual Studio 使用的符號快取區路徑。您可以在 [選項] 對話方塊中指定符號快取區路徑。如需詳細資訊,請參閱HOW TO:使用符號伺服器
公用屬性 SymbolPath 取得字串,包含 Visual Studio 在進行偵錯時使用的 .PDB 符號檔路徑。Visual Studio 使用者可以在 [選項] 對話方塊中指定符號路徑。如需詳細資訊,請參閱 HOW TO:指定符號位置和載入行為
公用屬性 SymbolPathState 取得字串,這個字串表示 Visual Studio 在進行偵錯時使用之 .PDB 符號檔的所有符號路徑狀態。
公用屬性 Transports (繼承自 Debugger2)。
公用屬性 Transports 取得所支援的偵錯傳輸集合。

回頁首

方法

  名稱 說明
公用方法 Break(Boolean) (繼承自 Debugger2)。
公用方法 Break(Boolean) 使指定的處理序暫停執行,如此才能分析其目前的狀態。
公用方法 DetachAll() (繼承自 Debugger2)。
公用方法 DetachAll() 從所有附加的程式中斷連結。
公用方法 ExecuteStatement(String, Int32, Boolean) (繼承自 Debugger2)。
公用方法 ExecuteStatement(String, Int32, Boolean) 執行指定的陳述式。如果 TreatAsExpression 旗標為 true,則字串會解譯成運算式,而且輸出會傳送到 命令視窗
公用方法 GetExpression(String, Boolean, Int32) (繼承自 Debugger2)。
公用方法 GetExpression(String, Boolean, Int32) 根據目前的堆疊框架評估運算式。如果運算式可以剖析但無法評估,則將會傳回物件,但它不包含有效值。
公用方法 GetExpression2(String, Boolean, Boolean, Int32) (繼承自 Debugger2)。
公用方法 GetExpression2(String, Boolean, Boolean, Int32) 根據目前的堆疊框架評估運算式。如果運算式可以剖析但無法評估,則將會傳回物件,但它不包含有效值。此成員 (Member) 函式與 GetExpression 類似,但是具有額外的布林值參數,該參數可設為 true,表示運算式要評估為陳述式。
公用方法 GetProcesses(Transport, String) (繼承自 Debugger2)。
公用方法 GetProcesses(Transport, String)
公用方法 Go(Boolean) (繼承自 Debugger2)。
公用方法 Go(Boolean) 從目前的陳述式開始執行程式。
公用方法 RunToCursor(Boolean) (繼承自 Debugger2)。
公用方法 RunToCursor(Boolean) 執行程式前往原始程式檔游標目前的位置。
公用方法 SetNextStatement() (繼承自 Debugger2)。
公用方法 SetNextStatement() 根據游標在目前原始程式檔中的位置,設定下一個要執行的指令。
公用方法 SetSymbolSettings 設定 Visual Studio 在偵錯時使用之 .PDB 符號的各種設定,並強制重新載入所有符號。
公用方法 StepInto(Boolean) (繼承自 Debugger2)。
公用方法 StepInto(Boolean) 如果可以,逐步執行下一個函式呼叫。
公用方法 StepOut(Boolean) (繼承自 Debugger2)。
公用方法 StepOut(Boolean) 跳出目前的函式。
公用方法 StepOver(Boolean) (繼承自 Debugger2)。
公用方法 StepOver(Boolean) 不進入下一個函式呼叫。
公用方法 Stop(Boolean) (繼承自 Debugger2)。
公用方法 Stop(Boolean) 停止偵錯並且終止所有附加的處理序或中斷它們的連結。
公用方法 TerminateAll() (繼承自 Debugger2)。
公用方法 TerminateAll() 結束目前正在執行的所有偵錯處理序。
公用方法 WriteMinidump(String, dbgMinidumpOption) (繼承自 Debugger2)。
公用方法 WriteMinidump(String, dbgMinidumpOption)

回頁首

備註

如下列範例所示,您可以利用 DTE2 物件的 Debugger 屬性,使用偵錯工具。 「整合式開發環境」(Integrated Development Environment,IDE) 的每個執行個體都有一個偵錯工具物件。

範例

Imports System
Imports EnvDTE
Imports EnvDTE90
Imports EnvDTE90
Imports System.Diagnostics

Public Module Module1
    'This function returns true if the debugger is actively debugging.
    Function IsDebugging() As Boolean
        Dim debugger As EnvDTE90.Debugger3
        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 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 "dte90.olb" raw_interfaces_only named_guids
using namespace EnvDTE90;
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(&pDebugger3)) && 
            pDebugger3
            != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger3->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }
    CoUninitialize();
    return nRet;
}

請參閱

參考

EnvDTE90 命名空間