Perl 调试器中的行操作命令
Perl中的调试器为我们提供了 行操作命令 的功能,但在深入了解它们之前,让我们先谈谈什么是真正的操作:所以一个操作基本上是给调试器的指令,当它到达一个特定的行时就执行它。让这些动作执行背后的原因是为了使调试变得简单。
例如
$i = 0;
for($i = 0; $i <= 9; $i++)
{
}
print($i);
以上是一个for循环的基本程序。现在如果我们在第4行指定一个行操作,要求调试器在每次迭代后打印i的值,那么我们就可以检查循环是否正确执行。因此,通过这种方式,它们有助于调试。
因此,为了指定这些行操作,Perl调试器为你提供了 行操作命令 的功能 。 这些命令有助于指定行的动作。行操作命令是指当程序执行到某一行时,我们指定要执行的语句。最常见的行操作是打印变量的值和将变量的错误值重置为所需的值。
以下是行操作命令。
- ‘A’命令
- ‘A’命令
- ‘<‘命令
- ‘>’命令
‘a’命令
‘a ‘命令 为某一行代码指定了一个动作。这个动作可以是任何有效的Perl命令。每次执行指定的行时,都会执行指定的动作。
语法
a line no. command to be executed [condition]
如果没有指定行,那么默认情况下,每次执行当前行时都会执行该动作。
例如:
输出:
解释:
在上面的例子中,调试器一到第九行就会执行上面的行。因此,上述语句将被调试器显示出来。
要创建多行的行操作,只需一个接一个地指定语句。如果你需要多行来写完整的动作,请在第一行的末尾使用 ‘ \’。
例子
输出
你也可以为执行动作指定一个条件( 这是可选的 )。首先这个条件将被评估,然后如果结果为真,那么将只对指定的行进行操作,否则将不执行任何操作。
在默认情况下,当没有条件时,调试器认为条件已经为真了。因此,每次执行到指定的行时都会执行动作。
注意 。
There can be only one action per line.
A’命令
A’ 命令 用于删除之前用 ‘ a ‘命令 指定的行操作 。 它删除命令中指定的行的动作。
语法
A lineno.;
例如:
在上面的例子中,为第11行指定的行操作将被删除。
请注意,在5.6.1之前的Perl版本中, ‘ A ‘命令 会删除所有指定的行操作。
在Perl 5.6.1及以后的版本中,只有当星号作为参数时才会删除所有操作。
例子
<and>
命令
当你知道某个变量的值是错误的,但又不知道哪个语句给这个变量分配了错误的值时, **< and >命令 **就很有用。因此,通过使用 **< and >命令 **,你可以在语句执行前后打印变量的值。
**< 命令 **
**’ <‘命令 **用来指定在Perl调试器执行完语句后,在调试器进一步要求更多的调试语句之前,要执行的行操作。
语法
< action to be performed;
例如:
输出:
上例中给出的命令告诉Perl调试器在再次停止程序的执行并开始调试之前打印指定的语句。
> 命令 **
**’ >’命令 **用来指定在执行代码的其他语句之前要执行的动作。因此,该动作将在执行某一行代码后执行,
**语法
> action to be performed;
例如:
输出
要删除一个用 **< 和>命令 **指定的动作,只需重新输入用于指定该动作的命令。
DB<8> < ;
这将删除用 **< 命令 **>指定的行动 。
DB<9> > ;
这将删除使用 **> 命令 **指定的操作 。
使用’L’命令显示行的动作
L’ 命令 用于显示断点、动作和观察点。从而帮助用户了解代码中的所有动作、断点和观察点。现在让我们来学习如何用它来显示动作。
例子
DB<3> L a;
使用 ‘ L ‘命令 来显示动作有利于调试。比如说。如果你想删除一个特定的动作,但你不知道它对应的是哪一行。因此,你可以使用第一个 ‘ L ‘命令 来显示所有的动作,然后使用 ‘ A ‘命令 来删除想要的动作。