断点控制方法

断点是在可执行代码中的位置,作系统停止执行并中断调试器。 这样,就可以分析目标并发出调试器命令。

可以按虚拟地址、模块和例程偏移量或源文件和行号(在源模式下)指定断点的位置。 如果在没有指定偏移量的例程中放置断点,则输入该例程时将激活断点。

有几种其他类型的断点:

  • 断点可以与特定线程相关联。

  • 断点可以允许在触发之前通过地址的固定次数。

  • 当触发断点时,断点可以自动执行某些命令。

  • 可以在非可执行内存上设置断点,并监视要读取或写入的位置。

如果要在用户模式下调试多个进程,则断点集合取决于当前进程。 若要查看或更改进程的断点,必须选择进程作为当前进程。 有关当前进程的详细信息,请参阅 控制进程和线程

用于控制和显示断点的调试器命令

若要控制或显示断点,可以使用以下方法:

在 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 及更高版本中,现在支持不明确的断点解析。 模糊断点允许调试器在某些情况下设置断点,这些情况下断点表达式会解析到多个位置。 有关详细信息,请参阅 不明确的断点解析

另请参阅

使用断点

断点语法

bp、bu、bm (设置断点)

未解析的断点 (bu 断点)