Debugger3 介面
Debugger3 是用來質詢和管理偵錯工具以及要進行偵錯之程式的狀態。 Debugger3 會取代 Debugger2 和 Debugger 介面。
命名空間: 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 | 取得所支援的偵錯傳輸集合。 |
回頁首
方法
回頁首
備註
如下列範例所示,您可以利用 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;
}