Debugging Tools for Windows

tb (Trace to Next Branch)

tb 命令执行程序直到遇到分支指令。

语法

tb [r] [= StartAddress] [Count

参数

r
打开或关闭寄存器和标志位的显示。默认情况下,寄存器和标志会被显示出来。可以通过tbrprtr.prompt_allow -reg命令来禁止显示寄存器。所有这四个命令都可以控制相同的设置,可以用它们中任意一个来覆盖前面命令的设置。

Y也可以使用l-os来禁止显示寄存器。该设置 和其他三条命令是分离的。使用rm (Register Mask)命令来控制显示哪些寄存器和标志位。

StartAddress
指定执行开始的地址。如果不使用StartAddress,则从指令指针指向的位置开始执行。该语法的更多信息,查看地址和地址区域语法
Count
指定允许通过的分支数量。每次遇到分支时,指令地址和指令都会显示出来。如果省略Count,默认值是1。

环境

模式 x86: 仅内核模式
Itanium:用户模式、内核模式
x64:用户模式、内核模式
目标 仅活动目标
平台 所有

注释

tb命令使得目标开始执行,一直持续到分支指令或遇到断点。

执行在遇到分支指令时停止。即使调试器在源码模式下,这种执行的停止也是基于汇编代码的。

分支指令包括调用、返回、跳转、记数的循环和while循环。如果调试器遇到非条件跳转或条件为真的条件分支,执行会停止下来。如果调试器遇到条件为假的分支,执行会继续。

执行停止时,会显示分支指令的地址以及任何关联的符号。该信息后面跟箭头和新的程序计数器位置的地址和指令。

tb 命令仅在当前处理器工作。如果在多处理器系统中使用tb ,到达分支指令或其他处理器发生了某些事件都会造成执行停止,不管哪一个先出现。

通常,分支跟踪在处理器控制块(PRCB)初始化完成之后就可用。(PRCB在引导进程的早期就进行初始化。) 但是,如果必须在这个时间点以前使用tb命令,可以通过.force_tb (Forcibly Allow Branch Tracing)来更早启用分支跟踪。要慎重使用.force_tb 命令,因为它会改变处理器状态。

附加信息

相关命令的更多信息,查看控制调试目标

Build machine: CAPEBUILD