13.4 调试模式

有三个额外的支持函数,允许用户找出 Octave 在执行脚本时进入调试模式的位置,并打印 Octave 进入调试模式时脚本中周围的代码。

 
dbwhere

在调试模式下,报告执行停止的当前文件和行号。

另请参阅:dbstackdblistdbstatusdbcontdbstepdbupdbdown

 
dbtype
dbtype lineno
dbtype startl:endl
dbtype startl:end
dbtype fcn
dbtype fcn lineno
dbtype fcn startl:endl
dbtype fcn startl:end

显示带有行号的脚本文件。

当在调试模式下不带参数调用时,显示当前正在调试的脚本文件。

可以使用可选的范围规范仅列出文件的一部分。特殊关键字 "end" 是文件最后一行的有效行号规范。

当使用函数名调用时,显示该脚本文件及其行号。

另请参阅:dblistdbwheredbstatusdbstop

 
dblist
dblist n

在调试模式下,列出正在调试的函数的 n 行代码,以当前要执行的行为中心。

如果未指定,n 默认为 10(+/- 5 行)。

另请参阅:dbwheredbtypedbstack

您也可以使用 isdebugmode 来确定调试器当前是否处于活动状态。

 
tf = isdebugmode ()

如果处于调试模式则返回 true,否则返回 false。

另请参阅:dbwheredbstackdbstatus

调试模式还允许使用 dbstep 命令单步执行函数。

 
dbstep
dbstep n
dbstep in
dbstep out
dbnext

在调试模式下,执行接下来的 n 行代码。

如果省略 n,则执行下一行代码。如果下一行代码本身是在某个 m 文件中定义的,则保持在当前函数中。

使用 dbstep in 将使下一行的执行步入下一行中定义的任何 m 文件。

使用 dbstep out 将使执行继续,直到当前函数返回。

编程说明:dbnextdbstep 的别名,可以互换使用。

另请参阅:dbcontdbquit

在调试模式下,RETURN 键将执行最后输入的命令。例如,在命中断点并输入一次 dbstep 后,只需按下回车键即可逐行推进代码。此功能可以使用 auto_repeat_debug_command 函数禁用。

 
val = auto_repeat_debug_command ()
old_val = auto_repeat_debug_command (new_val)
old_val = auto_repeat_debug_command (new_val, "local")

查询或设置内部变量,该变量控制当输入行为空时(仅按 RET 键)是否自动重复调试命令。

当从函数内部使用 "local" 选项调用时,该变量会局部地改为仅在该函数及其调用的子程序中有效。退出该函数时恢复原始变量值。


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2