断点相关方法

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

  • 绑定

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

  • Pending

    通过用户界面请求,但尚未绑定到具体操作指令

讨论

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

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

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

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

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

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

方法 Description
GetPendingBreakpoint 获取一个包含指定断点的待处理断点。
GetState 获取绑定断点的状态。
GetBreakpointResolution 获取描述断点的断点解析。
启用 启用或禁用断点。
删除 删除绑定断点。

解决方法和请求信息需要实现以下 IDebugBreakpointResolution2 方法。

方法 Description
GetBreakpointType 获取由分辨率表示的断点类型。
GetResolutionInfo 获取描述断点的断点解析信息。

解决绑定期间可能发生的错误需要实现以下 IDebugErrorBreakpoint2 方法。

方法 Description
GetPendingBreakpoint 获取包含错误断点的挂起断点。
GetBreakpointResolution 获取描述错误断点的断点错误解决方法。

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

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

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

另请参阅