📜  珀尔 |调试器中的行操作命令

📅  最后修改于: 2022-05-13 01:55:28.961000             🧑  作者: Mango

珀尔 |调试器中的行操作命令

Perl 中的调试器为我们提供了行动作命令的特性,但在深入了解它们之前,让我们先谈谈实际的动作是什么:所以动作基本上是一个指令,当它到达特定的行时,它会给调试器执行它。执行这些操作的原因是为了简化调试。
例如

$i = 0;
for($i = 0; $i <= 9; $i++)
{
      
}
print($i);

以上是for循环的基本程序。现在,如果我们在第 4 行指定一个行操作,要求调试器在每次迭代后打印 i 的值,那么我们可以检查循环是否正确执行。因此,通过这种方式,它们有助于调试。
因此,要指定这些行操作,Perl 调试器为您提供了行操作命令的特性。这些命令有助于指定行动作。行动作命令是我们指定在程序执行到指定行时执行的语句。最常见的行操作是打印变量的值并将变量的不正确值重置为所需值。
以下是行动作命令:

  1. “一个”命令
  2. 'A' 命令
  3. '<' 命令
  4. '>' 命令

'a' 命令

'a' command为特定的代码行指定一个动作。此操作可以是任何有效的 Perl 命令。每次执行指定的行时,都会执行指定的操作。

句法

a line no. command to be executed [condition]

如果未指定行,则默认情况下,每次执行当前行时都会执行该操作。

例子:
示例 2

输出:
输出1

解释:
在上面的例子中,调试器一到达第九行就执行上面的行。因此,调试器将显示上述语句。

要创建具有多行的行操作,只需一个接一个地指定语句。如果您需要多行来编写要执行的完整操作,请在第一行末尾使用“\”

例子:

示例 3
输出:

输出2

您还可以为操作的执行指定一个条件(它是可选的)。首先将评估此条件,然后如果结果为真,则仅对指定行执行操作,否则将不执行任何操作。
在默认情况下,当没有条件时,调试器认为条件已经为 TRUE。因此,每次执行到达指定行时都会执行该操作。

笔记:

There can be only one action per line.

'A' 命令

'A' command用于删除先前使用'a' command指定的行动作。它删除命令中指定的行的行操作。
句法:

A lineno.;

例子:
示例 4

在上面的例子中,为第 11 行指定的行动作将被删除。

请注意,在 5.6.1 之前的 Perl 版本中, 'A' command会删除所有指定的行操作。
在 Perl 5.6.1 和之后的版本中,只有当星号作为参数给出时,所有的动作才会被删除。

例子

示例 5

< 和 > 命令

< and > commands在您知道其中一个变量具有错误值时很有用,但您不知道哪个语句将错误值分配给变量。因此,通过使用< and > command ,您可以在执行语句之前和之后打印变量的值。

< 命令
'<' command用于指定在 Perl 调试器完成执行语句之后以及在调试器进一步要求更多调试语句之前要执行的行操作。

句法:

< action to be performed;

例子:
例 6

输出:
输出3

上面示例中给出的命令告诉 Perl 调试器在再次停止程序执行并开始调试之前打印指定的语句。

> 命令
'>' command用于指定在执行代码的进一步语句之前要执行的操作。因此,该动作将在执行某行代码后执行,
句法:

> action to be performed;

例子:
例 7

输出
输出4

要删除使用< and > command指定的操作,只需重新输入用于指定操作的命令。

DB<8> < ;

这将删除使用< command指定的操作。

DB<9> > ;

这将删除使用> command指定的操作。

使用“L”命令显示线路操作

'L' command用于显示断点、动作和观察点。从而帮助用户查看代码中的所有操作、断点和观察点。现在让我们学习如何使用它来显示动作。

例子:

DB<3> L a;

输出6

使用'L' command显示调试中的动作好处。例如:如果你想删除一个特定的动作,但你不知道它对应的是哪一行。因此,您可以使用第一个'L' command显示所有操作,然后使用'A' command删除所需的操作。