执行调试器命令
step
步进执行 <count> 指令(F11)
over
步出执行 <计数> 指令 (F10)
out
步进,直到当前子程序/异常处理程序返回(Shift-F11)
go
恢复执行(F5)
gbt
恢复执行,直到执行下一个结果为真的分支
gbf
恢复执行,直到执行下一个结果为假的分支
gex
恢复执行,直到出现异常
gint
恢复执行,直至中断 (F7)
gni
恢复执行,直至下一条指令
gtime
恢复执行,直至指定的延迟时间结束
gvblank
恢复执行,直至下一个垂直同步 (F8)
next
恢复执行,直至下一次切换 CPU (F6)
focus
目标设置为当前<CPU>
ignore
在 <CPU> 上停止调试
observe
在 <CPU> 上恢复调试
trace
将指定的 CPU 跟踪记录存储到文件中
traceover
跳过子程序,将指定的 CPU 跟踪记录存储到文件中
traceflush
刷新所有打开的跟踪文件。
step
s[tep] [<count>]
在当前执行的 CPU 上单步执行一条或多条指令。如果省略<count>,则执行一条指令;如果提供<count>,则执行<count>指令。
例:
s
在当前 CPU 上向前执行一条指令。
step 4
在当前 CPU 上向前执行四条指令。
over
o[ver] [<count>]
over 命令单步 "步过 "当前执行 CPU 上的一条或多条指令,步过子程序调用和异常处理程序,并将其视为一条指令。请注意,当步过子程序调用时,代码可能会在子程序返回前在其他 CPU 上执行。
如果省略 <count>,则跳过一条指令;如果提供 <count> 指令,则跳过 <count> 指令。
请注意,并非所有 CPU 类型都能实现 step over 功能。如果没有实现,over 的行为将与 step 完全相同。
例:
o
在当前 CPU 上向前执行一条指令。
over 4
在当前 CPU 上向前移动四个指令。
out
out
单步执行,直到遇到从子程序返回或从异常返回指令。需要注意的是,由于它能检测从异常返回的条件,如果试图跳出子程序,而在子程序完成前发生了中断/异常,执行可能会在异常处理程序结束时提前停止。
请注意,并非所有 CPU 类型都能实现 step out 功能。如果没有实现,out 的行为将与 step 完全相同。
例:
out
直到当前子程序或异常处理程序返回为止。
go
g[o] [<address>]
恢复执行。直到触发断点或观察点,或手动请求调试器中断,控制权才会返回调试器。如果提供了可选的\ <address>,将在指定地址为可见 CPU 设置一个临时无条件断点。触发后将自动清除。
例:
g
继续执行,直到触发断点/观察点,或手动请求断点。
g 1234
恢复执行,停止在地址 1234,除非有其他条件导致执行在以下情况之前停止
gbf
gbf [<condition>]
恢复执行。直到触发断点或监视点,或在任何延迟槽之后未执行条件分支或跳转指令,控制权才会返回调试器。
通过可选的 <condition> 参数,可以指定每次遇到条件分支时都要评估的表达式。如果表达式的结果为 true(非零),则在不执行分支后停止执行;否则,将继续执行而不发出通知。
例:
gbf
继续执行,直到触发断点/观察点,或直到下一个结果为false的分支。
gbf {pc != 1234}
继续执行,直到下一个结果为假的分支,忽略地址为 1234 的指令。
gbt
gbt [<condition>]
恢复执行。直到触发断点或观察点,或在任何延迟槽之后执行条件分支或跳转指令,控制权才会返回调试器。
通过可选的 <condition> 参数,可以指定每次遇到条件分支时都要评估的表达式。如果表达式的结果为 true(非零),则执行分支后将停止执行;否则,将继续执行,不会发出任何通知。
例:
gbt
继续执行,直到触发断点/观察点,或直到下一个结果为真的分支。
gbt {pc != 1234}
继续执行,直到下一个结果为真的分支,忽略地址为 1234 的指令。
gex
ge[x] [<exception>,[<condition>]]
恢复执行。直到触发断点或观察点,或当前 CPU 出现异常条件,才会将控制权返回调试器。使用可选的 <exception> 参数,可以仅在特定异常条件下停止执行。如果省略 <exception>,则会在任何异常条件下停止执行。
通过可选的 <condition> 参数,可以指定一个表达式,每次指定的异常条件触发时,都会对该表达式进行评估。如果表达式的结果为 true(非零),异常将停止执行;否则,将继续执行,不会发出任何通知。
例:
gex
恢复执行,直至触发断点/观察点,或当前 CPU 出现异常条件。
ge 2
继续执行,直至触发断点/观察点,或当前 CPU 出现异常条件 2。
gint
gi[nt] [<irqline>]
恢复执行。在触发断点或观察点之前,或在当前 CPU 上发出并确认中断之前,控制权不会返回调试器。使用可选的 <irqline> 参数,可仅在断言和确认特定中断行时停止执行。如果省略 <irqline>,执行将在任何中断被确认时停止。
例:
gi
恢复执行,直至触发断点/观察点,或当前 CPU 上的任何中断被发出和确认。
gint 4
恢复执行,直至触发断点/观察点,或当前 CPU 的中断请求线 4 被确认。
gni
gni [<count>]
恢复执行。在触发断点或观察点之前,控制权不会返回调试器。在程序地址 指令处设置一个无条件的临时断点,该断点依次经过当前指令。当该断点被触发时,它会自动移除。
<count> 参数是可选的,如果省略,默认值为 1。如果 <count> 指定为 0,命令将不起作用。<count> 不允许超过 512 个十进制数。
例:
gni
继续执行,直至触发断点/观察点,包括在下一条指令地址处设置的临时断点。
gni 2
继续执行,直到触发断点/观察点。临时断点设置在当前指令的两个指令之后。
gtime
gt[ime] <milliseconds>
恢复执行。在指定的模拟时间间隔结束之前,控制权不会返回调试器。时间间隔以毫秒为单位。
例:
gtime #10000
恢复执行十秒钟。
gvblank
gv[blank]
恢复执行。直到触发断点或观察点,或直到模拟屏幕的垂直同步开始,控制权才会返回调试器。
例:
gv
继续执行,直到触发断点/观察点或开始垂直同步。
next
n[ext]
恢复执行,直到进入另一个 CPU 。如果 CPU 因使用忽略或焦点而被忽略,则在调度 CPU 时不会停止执行。
例:
n
恢复执行,当进入了另一个未被忽略的 CPU 时停止执行。
focus
focus <CPU>
只关注指定的 <CPU>,忽略所有其他 CPU。<CPU> 参数可以是设备标签或调试器 CPU 编号。这相当于使用 ignore 命令忽略指定 CPU 以外的所有 CPU。
例:
focus 1
只关注系统中的第二个 CPU(基于零的索引),忽略所有其他 CPU。
focus audiopcb:melodycpu
专注于 CPU绝对标签路径 :audiopcb:melodycpu 。
ignore
ignore [<CPU>[,<CPU>[,…]]]
忽略调试器中指定的 CPU。CPU 可以通过标签或调试器 CPU 编号指定。调试器从不显示被忽略 CPU 的执行情况,被忽略 CPU 上的断点或观察点也不起作用。如果没有指定 CPU,则会列出当前忽略的 CPU。使用 observe 命令可停止忽略 CPU。
请注意,不能忽略所有 CPU;必须始终观察至少一个 CPU。
例:
ignore audiocpu
使用调试器时,忽略带有绝对标记路径 :audiocpu 的 CPU。
ignore 2,3,4
使用调试器时,忽略系统中的第三个、第四个和第五个 CPU(基于零的索引)。
ignore
列出调试器当前忽略的 CPU。
observe
observe [<CPU>[,<CPU>[,…]]]
允许与调试器中指定的 CPU 交互。CPU 可以通过标签或调试器 CPU 编号指定。该命令与忽略命令的效果相反。如果没有指定 CPU,则会列出当前观察到的 CPU。
例:
observe audiocpu
在使用调试器时,停止忽略带有绝对标记路径 :audiocpu 的 CPU。
observe 2,3,4
在使用调试器时,停止忽略系统中的第三、第四和第五个 CPU(基于零的索引)。
observe
列出调试器当前正在观察的 CPU。
trace
trace {<filename>|off}[,<CPU>[,[noloop|logerror][,<action>]]]
启动或停止跟踪指定 <CPU> 的执行,如果未指定 CPU,则跟踪当前可见的 CPU。要启用跟踪,请在 <filename> 参数中指定跟踪日志文件名。要禁用跟踪,请在 <filename> 参数中使用关键字 off。如果 <filename> 参数以两个直角括号 (>>) 开头,它将被视为打开文件进行附加而非覆盖的指令。
可选的第三个参数是一个标志字段。支持的标志有 noloop 和 logerror。多个标志必须用 | 字符分隔。默认情况下,将检测到循环并将其压缩为一行。如果指定了 noloop 标志,则不会检测到循环,每条指令都将被记录为已执行。如果指定 logerror 标志,错误日志输出将包含在跟踪日志中。
可选的 <action> 参数是在记录每条跟踪信息前执行的调试器命令。一般来说,这将包括 tracelog 或 tracesym 命令,以便在跟踪日志中包含更多信息。请注意,您可能需要用大括号 { } 将动作包围起来,以确保命令中的逗号和分号不会在跟踪命令本身的上下文中被解释。
例:
trace joust.tr
开始跟踪当前可见 CPU 的执行情况,并将输出记录到文件 joust.tr。
trace dribling.tr,maincpu
使用绝对标记路径 :maincpu: 开始跟踪 CPU 的执行情况,并将输出记录到文件 dribling.tr。
trace starswep.tr,noloop
开始跟踪当前可见 CPU 的执行情况,将输出记录到文件 starswep.tr,并禁用循环检测。
trace starswep.tr,1,logerror
开始跟踪系统中第二个 CPU 的执行情况(基于零的索引),将输出和错误日志输出记录到文件 starswep.tr。
trace starswep.tr,0,logerror|noloop
开始跟踪系统中第一个 CPU 的执行情况(基于零的索引),将输出和错误日志输出记录到文件 starswep.tr,并禁用循环检测。
trace >>pigskin.tr
开始跟踪当前可见 CPU 的执行情况,并将日志输出附加到文件 pigskin.tr。
trace off,0
关闭对系统中第一个 CPU 的跟踪(基于零的索引)。
trace asteroid.tr,{tracelog "A=%02X ",a}
开始跟踪当前可见 CPU 的执行情况,并将输出记录到文件 asteroid.tr。在每一行之前,输出 A=<aval> 到跟踪日志。
traceover
traceover {<filename>|off}[,<CPU>[,[noloop|logerror][,<action>]]]
开始或停止跟踪指定的 <CPU>,如果没有指定 CPU,则开始或停止跟踪当前可见的 CPU。遇到子程序调用时,跟踪将跳过该子程序。所使用的算法与 step over 命令相同。如果使用递归函数,或者返回地址不是紧跟在调用指令之后,则无法正常工作。
该命令接受的参数与跟踪命令相同。有关选项的详细说明和更多示例,请参阅相应章节。
例:
traceover joust.tr
开始跟踪当前可见 CPU 的执行情况,并将输出记录到文件 joust.tr。
traceover dribling.tr,maincpu
使用绝对标记路径 :maincpu: 开始跟踪 CPU 的执行情况,将输出记录到文件 dribling.tr 中
traceover starswep.tr,noloop
开始跟踪当前可见 CPU 的执行情况,将输出记录到文件 starswep.tr,并禁用循环检测。
traceover off,0
关闭对系统中第一个 CPU 的跟踪(基于零的索引)。
traceover asteroid.tr,{tracelog "A=%02X ",a}
开始跟踪当前可见 CPU 的执行情况,并将输出记录到文件 asteroid.tr。在每一行之前,输出 A=<aval> 到跟踪日志。
traceflush
traceflush
将所有打开的跟踪日志文件刷新到磁盘。
例:
traceflush
刷新跟踪日志文件。