断点相关方法
调试引擎 (DE) 必须支持断点的设置。 Visual Studio 调试支持以下类型的断点:
Bound
通过 UI 请求并成功绑定到指定的代码位置
挂起
通过 UI 请求,但尚未与实际指令绑定
讨论 (Discussion)
例如,当指令尚未加载时,就会出现待处理断点。 当加载代码时,待处理断点会尝试绑定到指定位置的代码,即在代码中插入断点指令。 事件会被发送到会话调试管理器 (SDM),以指示成功绑定或通知绑定错误。
挂起的断点还管理自己内部的相应绑定断点列表。 一个挂起的断点可以在代码中插入多个断点。 Visual Studio 调试 UI 会以树形视图显示挂起断点及其对应的绑定断点。
创建和使用挂起断点需要执行 IDebugEngine2::CreatePendingBreakpoint 方法以及 IDebugPendingBreakpoint2 接口的以下方法。
方法 | 说明 |
---|---|
CanBind | 确定指定的挂起断点是否可以绑定到代码位置。 |
Bind | 将指定的挂起断点绑定到一个或多个代码位置。 |
GetState | 获取挂起断点的状态。 |
GetBreakpointRequest | 获取用于创建挂起断点的断点请求。 |
启用 | 切换挂起断点的启用状态。 |
EnumBoundBreakpoints | 枚举从挂起断点绑定的所有断点。 |
EnumErrorBreakpoints | 枚举由挂起断点产生的所有错误断点。 |
删除 | 删除挂起的断点及其绑定的所有断点。 |
若要枚举绑定断点和错误断点,必须实现 IEnumDebugBoundBreakpoints2 和 IEnumDebugErrorBreakpoints2 的所有方法。
绑定到代码位置的挂起断点需要实现以下 IDebugBoundBreakpoint2 方法。
方法 | 说明 |
---|---|
GetPendingBreakpoint | 获取包含断点的挂起断点。 |
GetState | 获取绑定断点的状态。 |
GetBreakpointResolution | 获取描述断点的断点解析。 |
启用 | 启用或禁用断点。 |
删除 | 删除绑定的断点。 |
解析和请求信息需要执行以下 IDebugBreakpointResolution2 方法。
方法 | 说明 |
---|---|
GetBreakpointType | 获取由解析表示的断点类型。 |
GetResolutionInfo | 获取描述断点的断点解析信息。 |
解决绑定过程中可能发生的错误需要执行以下 IDebugErrorBreakpoint2 方法。
方法 | 说明 |
---|---|
GetPendingBreakpoint | 获取包含错误断点的挂起断点。 |
GetBreakpointResolution | 获取描述错误断点的断点错误解析。 |
解析绑定期间可能发生的错误还需要执行以下 IDebugErrorBreakpointResolution2 方法。
方法 | 说明 |
---|---|
GetBreakpointType | 获取断点的类型。 |
GetResolutionInfo | 获取断点的解析信息。 |
查看断点处的源代码需要实现 IDebugStackFrame2::GetDocumentContext 和/或 IDebugStackFrame2::GetCodeContext 的方法。