【发布时间】:2011-01-14 13:20:00
【问题描述】:
我希望 perl 程序在遇到某些条件时启动调试器。其他一些语言有库支持的debug()语句,perl中是否有类似的语句?
【问题讨论】:
我希望 perl 程序在遇到某些条件时启动调试器。其他一些语言有库支持的debug()语句,perl中是否有类似的语句?
【问题讨论】:
如果我理解正确,您需要在代码中使用特定的调试器变量 - $DB::single。在您的代码中将此设置为真值将导致调试器在该行停止。
$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();
然后您的代码将停在 $DB::single 设置为 1 的行。
当然,如果您实际上不能确保您的代码在调试器中运行,那么您完全有另一个问题。您将还需要通过perl -d 运行您的代码。
【讨论】:
import pdb; pdb.set_trace() 以在此时中断并进入调试器。我不必使用任何特殊的调试修饰符来运行脚本。
您是否尝试将 -d 开关添加到脚本顶部的 shebang 行?类似的东西
#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";
print "Test";
这真的取决于它是如何启动的,但至少在简单的情况下这应该启动调试器。
编辑: 然后,您可以使用
在具有特定条件的特定行上设置断点> b [line] [condition]
然后点击
> c
继续运行脚本 - 满足条件时调试器将在指定行停止
【讨论】:
嗯,有一些东西可以让您执行断点之类的操作,但功能更广泛:Perl Debugger。
【讨论】:
本质上,
-d开关允许您与 perl 可执行文件通信,并允许 perl 可执行文件与您通信。
【讨论】: