断点相关方法

调试引擎 (DE) 必须支持断点的设置。 Visual Studio 调试支持以下类型的断点:

  • Bound

    通过 UI 请求并成功绑定到指定的代码位置

  • 挂起

    通过 UI 请求,但尚未与实际指令绑定

讨论 (Discussion)

例如,当指令尚未加载时,就会出现待处理断点。 当加载代码时,待处理断点会尝试绑定到指定位置的代码,即在代码中插入断点指令。 事件会被发送到会话调试管理器 (SDM),以指示成功绑定或通知绑定错误。

挂起的断点还管理自己内部的相应绑定断点列表。 一个挂起的断点可以在代码中插入多个断点。 Visual Studio 调试 UI 会以树形视图显示挂起断点及其对应的绑定断点。

创建和使用挂起断点需要执行 IDebugEngine2::CreatePendingBreakpoint 方法以及 IDebugPendingBreakpoint2 接口的以下方法。

方法 说明
CanBind 确定指定的挂起断点是否可以绑定到代码位置。
Bind 将指定的挂起断点绑定到一个或多个代码位置。
GetState 获取挂起断点的状态。
GetBreakpointRequest 获取用于创建挂起断点的断点请求。
启用 切换挂起断点的启用状态。
EnumBoundBreakpoints 枚举从挂起断点绑定的所有断点。
EnumErrorBreakpoints 枚举由挂起断点产生的所有错误断点。
删除 删除挂起的断点及其绑定的所有断点。

若要枚举绑定断点和错误断点,必须实现 IEnumDebugBoundBreakpoints2IEnumDebugErrorBreakpoints2 的所有方法。

绑定到代码位置的挂起断点需要实现以下 IDebugBoundBreakpoint2 方法。

方法 说明
GetPendingBreakpoint 获取包含断点的挂起断点。
GetState 获取绑定断点的状态。
GetBreakpointResolution 获取描述断点的断点解析。
启用 启用或禁用断点。
删除 删除绑定的断点。

解析和请求信息需要执行以下 IDebugBreakpointResolution2 方法。

方法 说明
GetBreakpointType 获取由解析表示的断点类型。
GetResolutionInfo 获取描述断点的断点解析信息。

解决绑定过程中可能发生的错误需要执行以下 IDebugErrorBreakpoint2 方法。

方法 说明
GetPendingBreakpoint 获取包含错误断点的挂起断点。
GetBreakpointResolution 获取描述错误断点的断点错误解析。

解析绑定期间可能发生的错误还需要执行以下 IDebugErrorBreakpointResolution2 方法。

方法 说明
GetBreakpointType 获取断点的类型。
GetResolutionInfo 获取断点的解析信息。

查看断点处的源代码需要实现 IDebugStackFrame2::GetDocumentContext 和/或 IDebugStackFrame2::GetCodeContext 的方法。

另请参阅