我可以在源perl程序中插入断点吗?

时间:2011-01-14 13:20:00

标签: perl debugging

我希望perl程序在遇到某些条件时启动调试器。其他一些语言的库支持debug()语句,perl中是否有类似的语句?

4 个答案:

答案 0 :(得分:34)

如果我理解正确,您需要在代码中使用特定的调试器变量 - $DB::single。在代码中将此值设置为true将导致调试器在该行上停止。

$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();

然后,您的代码将在$ DB :: single设置为1的行中停止。

当然,如果您无法确保代码在调试器中运行,那么您完全有另一个问题。您 还需要通过perl -d运行您的代码。

答案 1 :(得分:7)

您是否尝试将-d开关添加到脚本顶部的shebang行?像

这样的东西
#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";

print "Test";

这实际上取决于它是如何启动的,但至少在简单的情况下这应该启动调试器。

编辑: 然后,您可以使用

在具有特定条件的特定行上设置断点
> b [line] [condition]

并点击

> c

继续运行脚本 - 当满足条件时,调试器将在指定的行停止

答案 2 :(得分:3)

嗯,有一些东西可以让你做一些像断点这样的东西,但功能更广泛:Perl Debugger

答案 3 :(得分:2)

  

基本上-d开关允许您与perl可执行文件通信,并允许perl可执行文件与您通信。

More