断点控制方法
在源模式下) 时,可以按虚拟地址、模块和例程偏移量或源文件和行号 (指定断点的位置。 如果在没有偏移量的例程上放置断点,则输入该例程时将激活该断点。
有多种其他类型的断点:
断点可以与某个线程相关联。
断点可以在触发地址之前启用固定数量的传递。
断点可以在触发时自动发出某些命令。
可以在非可执行内存上设置断点,并watch读取或写入该位置。
如果要在用户模式下调试多个进程,则断点集合取决于当前进程。 若要查看或更改进程的断点,必须将进程选为当前进程。 有关当前进程的详细信息,请参阅 控制进程和线程。
用于控制和显示断点的调试器命令
若要控制或显示断点,可以使用以下方法:
使用 bl (断点列表) 命令列出现有断点及其当前状态。
使用 .bpcmds (显示断点命令) 命令列出所有断点以及用于创建断点的命令。
使用 bp (设置断点) 命令设置新的断点。
使用 bu (设置未解析断点) 命令设置新的断点。 使用 bu 设置的断点称为未解析断点;它们具有与使用 bp 设置的断点不同的特征。 有关完整的详细信息,请参阅 未解决的断点 (bu 断点) 。
使用 bm (设置符号断点) 命令在与指定模式匹配的符号上设置新的断点。 如果包含 /d 开关,则具有 bm 的断点集将与地址 (关联,例如 bp 断点) ;如果未包含此开关,它将像 bu 断点) 一样 (解析。
使用 ba (Break on Access) 命令设置 处理器断点,也称为 数据断点。 在写入内存位置、读取内存位置、将其作为代码执行或发生内核 I/O 时,可以触发这些断点。 有关完整详细信息,请参阅 处理器断点 (ba 断点) 。
使用 bc (断点清除) 命令永久删除一个或多个断点。
使用 bd (断点禁用) 命令暂时禁用一个或多个断点。
使用 be (断点启用) 命令重新启用一个或多个禁用的断点。
使用 br (断点重新编号) 命令更改现有断点的 ID。
使用 bs (更新断点命令) 命令更改与现有断点关联的命令。
使用 bsc (更新条件断点) 命令更改发生现有条件断点的条件。
在 WinDbg 中,有几个用户界面元素有助于控制和显示断点。 请参阅 在 WinDbg (经典) 中设置断点 。
每个断点都有一个十进制数,称为与之关联的断点 ID。 此数字标识各种命令中的断点。
断点命令
可以在命中断点时自动执行的断点中包含命令。 例如,以下命令在 MyFunction+0x47 处中断,写入转储文件,然后继续执行。
0:000> bu MyFunction+0x47 ".dump c:\mydump.dmp; g"
注意 如果要从内核调试器控制用户模式调试器,请不要在断点命令字符串中使用 g (Go) 。 串行接口可能无法跟上此命令的运行,并且你将无法重新进入 CDB。 有关这种情况的详细信息,请参阅 从内核调试器控制 User-Mode 调试器。
断点数
在内核模式下,最多可以使用 32 个软件断点。 在用户模式下,可以使用任意数量的软件断点。
支持的处理器断点数取决于目标处理器体系结构。
条件断点
可以设置仅在特定条件下触发的断点。 有关这些断点类型的详细信息,请参阅 设置条件断点。
不明确的断点
在版本 10.0.25310.1001 及更高版本的调试器引擎中,现在支持不明确的断点解析。 不明确的断点允许调试器在某些断点表达式解析到多个位置的情况下设置断点。 有关详细信息,请参阅 不明确的断点解析。