可以使用在任何m文件函数中设置断点设置断点
作用
fcn
¶fcn line
¶fcn line1 line2 …
¶line1 …
¶in fcn
¶in fcn at line
¶in fcn at line if "condition"
¶in class at method
¶if event
¶if event ID
¶(bp_struct)
¶rline =
dbstop …
¶为内置调试器设置断点。
fcn是当前上的函数的名称路径
。在调试模式下准备就绪时fcn参数可以省略,将使用current函数。子函数的断点是用scopeoperator设置的>’. 例如,如果文件m有一个子函数fcn2
,然后是中的断点fcn2
可以从指定文件>fcn2
.
线是要打断的行号。如果线未指定,它默认为文件中的第一个可执行行fcn.m。在一个命令中可以指定多行;当使用函数语法时,行也可以作为单个向量参数传递([第1行, 第2行, …]
).
条件是可以在断点处存在的代码上下文中计算的任何Octave表达式。当遇到断点时,条件将进行评估,如果条件是真的。如果条件无法计算,例如,因为它引用了未定义的变量,将引发错误。具有副作用的表达式(例如y++>1
)将改变变量,通常应避免。包含引号的条件(’,‘)或注释字符(#’, ‘%)必须随附询价单。(这不适用于从编辑器的上下文菜单输入的条件。)例如:
轴中246处的dbstop(如果“any(opt==“x”)”)
指定的表格事件不会在给定的函数和行号处导致特定的断点。相反,当遇到某些意外事件时,它会导致进入调试模式。可能的值为
错误
报告错误时停止。这相当于同时指定debug_on_error(true)
和debug_on_interrupt(true)
.
捕获的错误
当try-catch块(尚未实现)捕获到错误时停止。
打断
中断时停止(Ctrl-C)发生。
naninf
当代码返回非有限值(尚未实现)时停止。
警告
返回警告时停止。这相当于指定debug_on_warning(true)
.
事件错误
, 捕获的错误
和警告
都可以后跟一个指定错误ID或警告ID的字符串。如果这样做,只有具有指定ID的错误才会导致执行停止。要在一组ID中的一个上停止,请执行多个设置断点
必须发出命令。
可以使用删除断点和事件dbclear
命令。
可以通过发出以下命令来保存所有断点并立即恢复它们bp_state=dbstatus…;dbstop(bp_state)
.
可选输出rline是设置断点的实数。如果指定的行不可执行,则这可能与指定的行不同。例如,如果在空行上尝试断点,则Octave将在下一个可执行行设置真正的断点。
当重新解析文件时,例如在GUI外部修改文件时,会清除文件中的所有断点。
详见: dbclear, 数据库状态, dbstep, 调试出错, debug_on_warning, debug_on_interrupt.
还支持类方法中的断点(例如。,dbstop(“@class/method”)
). 但是不能在函数中设置断点(例如。,罪
等等)或动态加载的函数(即oct文件)。
要在输入函数后立即设置断点,请使用行号1,或者完全限制行号,只给出函数名称。设置断点时,Octave将忽略前导注释块,并且断点将设置在函数中的第一条可执行语句上。例如
dbstop(“asind”,1)⇒ 29
请注意,的返回值29
意味着断点被有效地设置到第29行。可以使用查询函数中断点的状态数据库状态
.
fcn
¶bp_list =
dbstatus …
¶返回活动断点的位置。
当在没有输入或输出参数的情况下调用时,打印所有具有断点的函数的列表以及设置这些断点的行号。
如果函数名称fcn则仅返回命名函数及其子函数的断点。
可选的返回参数bp_list是一个结构体数组,包含以下字段:
具有断点的函数的名称。一个子函数,比如fcn2
在m文件中,比如文件.m,被指定为文件>fcn2
.
函数代码所在的m文件的名称。
具有断点的行号。
断点处于活动状态必须满足的条件,或者无条件断点必须满足空字符串。
如果dbstop if错误
为true,但未指定显式ID,因此值将有一个名为的空字段错误
。如果指定了ID,则错误
字段的每个ID将有一行。如果dbstop if错误
是假的,没有错误
field这个警告
字段的设置类似于dbstop if警告
.
重复使用前面的例子,dbstatus(“asind”)
将返回29。然后可以使用清除列出的断点dbclear
作用
fcn
¶fcn line
¶fcn line1 line2 …
¶line …
¶all
¶in fcn
¶in fcn at line
¶if event
¶("fcn")
¶("fcn", line)
¶("fcn", line1, line2, …)
¶("fcn", line1, …)
¶(line, …)
¶("all")
¶删除行号处的断点线在函数中fcn.
参数是
函数名称作为字符串变量。当已经处于调试模式时,可以省略此参数,并使用当前函数。
要删除断点的行号。多行可以作为单独的参数或作为向量给出。
诸如错误
, 打断
或警告
详见设置断点
详细信息)。
当在没有指定行号的情况下调用时,namedfunction中的所有断点都会被清除。
如果指定的行不是断点,则不执行任何操作。
特殊关键字全部的
将清除所有文件中的所有断点。
也可以在子函数中设置断点。例如,如果一个文件包含以下函数
函数y=func1(x)y=func2(x);端函数y=func2(x)y=x+1;结束函数
然后可以在子函数的开头直接设置断点
dbstop函数1>函数2⇒ 5.
请注意,>是将子函数与包含子函数的文件区分开来的字符。
在Octave脚本中设置断点的另一种简单方法是使用键盘
作用
()
¶("prompt")
¶停止m文件执行并进入调试模式。
当键盘
函数执行时,Octave打印一个提示并等待用户输入。然后对输入字符串进行评估并打印结果。这使得可以检查函数中变量的值,并在必要时赋值新值。要退出程序并返回到正常执行类型return或dbcont’.这个键盘
函数不返回退出状态。
如果键盘
在没有参数的情况下调用,默认提示为调试>被使用。
这个键盘
函数被放置在脚本中用户希望停止执行的位置。它会自动将运行脚本设置为调试模式。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号