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 | 获取最后同时命中的绑定断点的集合。 | |
BreakpointLastHit | 获取最后命中的断点。 | |
Breakpoints | 获取断点的集合。 | |
CurrentMode | 获取 IDE 上下文中调试器的当前模式。 | |
CurrentProcess | 获取或设置活动进程。 | |
CurrentProgram | 设置或返回活动程序。 | |
CurrentStackFrame | 获取或设置当前的堆栈帧。 | |
CurrentThread | 获取或设置当前正在调试的线程。 | |
DebuggedProcesses | 获取当前正在调试的进程的列表。 | |
DTE | 获取顶级扩展性对象。 | |
HexDisplayMode | 获取或设置一个值,该值指示是以十六进制还是以十进制格式输出表达式。 | |
HexInputMode | 获取或设置一个值,该值指示是以十六进制还是以十进制格式计算表达式。 | |
Languages | 获取调试器所支持的语言的列表。 | |
LastBreakReason | 获取程序中断的最终原因。如果程序正在运行,它将返回 DBG_REASON_NONE。 | |
LocalProcesses | 获取该计算机上当前正在运行的进程列表。 | |
Parent | 获取 Debugger2 对象 (DTE2) 的直接父对象。 | |
Transports | 获取支持的调试传输的集合。 |
页首
方法
名称 | 说明 | |
---|---|---|
Break | 使给定进程暂停执行以便可以分析其当前状态。 | |
DetachAll | 从所有附加的程序中分离。 | |
ExecuteStatement | 执行指定的语句。如果 TreatAsExpression 标志为 true,那么字符串将被解释为表达式,且输出被发送至 “命令”窗口。 | |
GetExpression | 根据当前堆栈帧计算表达式。如果表达式可以进行分析但无法计算,则将返回不包含有效值的对象。 | |
GetExpression2 | 根据当前堆栈帧计算表达式。如果表达式可以进行分析但无法计算,则将返回不包含有效值的对象。 | |
GetProcesses | 允许调用方从远程计算机获取进程的集合。 | |
Go | 从当前语句开始执行程序。 | |
RunToCursor | 将程序执行到源文件光标的当前位置。 | |
SetNextStatement | 根据当前源文件中的光标位置设置要执行的下一个指令。 | |
StepInto | 如果可能,单步执行下一个函数调用。 | |
StepOut | 跳出当前函数。 | |
StepOver | 转到下一个函数调用。 | |
Stop | 停止调试,并终止所有附加的进程或从所有附加的进程分离出来。 | |
TerminateAll | 终止当前正在运行的所有调试进程。 | |
WriteMinidump | 如果正在调试程序且处于中断模式下,则此函数将为当前调试会话创建一个小型转储。 |
页首
备注
可以通过 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;
}