Debugging Tools for Windows

.bpsync (Synchronize Threads at Breakpoint)

当某个线程到达断点时,.bpsync 命令冻结所有其他线程,直到应用断点的线程单步通过了该断点。

语法

.bpsync 1
.bpsync 0
.bpsync 

参数

1
当某个线程中遇到断点时,冻结所有线程。在遇到断点的线程执行通过该断点后,其他线程才被解冻。
0
当某个线程遇到断点时,允许其他线程继续运行。这是默认行为。

环境

模式 仅用户模式
目标 仅活动调试
平台 所有

注释

如果不带参数,.bpsync命令显示当前的断点同步规则。

.bpsync命令对内存断点(使用bpbubm设置)和硬件断点(使用ba设置)都起效。

如果可能有多个线程会执行到相同代码,.bpsync 1 命令对于捕捉到所有断点事件很有用。如果没有.bpsync,可能会有断点的触发被漏掉,因为当第一个线程到达断点时,调试器总是会暂时移除该断点。在断点被移除的短时间内,如果有其他线程也到达相同位置的代码,可能就不会触发断点。

对断点的临时移除是正常的调试器操作。当目标到达断点并恢复执行时,调试器必须要临时移除断点以使得它能执行真实代码。一旦真实代码被执行之后,调试器重新插入断点。调试器通过恢复断点(或者关闭数据断点)、单步执行、然后恢复断点来实现这个过程。

注意如果使用了.bpsync 1,有造成某些被冻结的线程死锁的风险。

Build machine: CAPEBUILD