Debugging Tools for Windows |
当某个线程到达断点时,.bpsync 命令冻结所有其他线程,直到应用断点的线程单步通过了该断点。
.bpsync 0
.bpsync
模式 | 仅用户模式 |
目标 | 仅活动调试 |
平台 | 所有 |
如果不带参数,.bpsync命令显示当前的断点同步规则。
.bpsync命令对内存断点(使用bp、bu或bm设置)和硬件断点(使用ba设置)都起效。
如果可能有多个线程会执行到相同代码,.bpsync 1 命令对于捕捉到所有断点事件很有用。如果没有.bpsync,可能会有断点的触发被漏掉,因为当第一个线程到达断点时,调试器总是会暂时移除该断点。在断点被移除的短时间内,如果有其他线程也到达相同位置的代码,可能就不会触发断点。
对断点的临时移除是正常的调试器操作。当目标到达断点并恢复执行时,调试器必须要临时移除断点以使得它能执行真实代码。一旦真实代码被执行之后,调试器重新插入断点。调试器通过恢复断点(或者关闭数据断点)、单步执行、然后恢复断点来实现这个过程。
注意如果使用了.bpsync 1,有造成某些被冻结的线程死锁的风险。