我希望perl程序在遇到某些条件时启动调试器。其他一些语言的库支持debug()语句,perl中是否有类似的语句?
答案 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可执行文件与您通信。