当某些情况发生时我想要perl程序启动调试器.其他一些语言的库支持debug()语句,perl中是否有类似的语句?
Nic*_*son 34
如果我理解正确,您需要在代码中使用特定的调试器变量 - $DB::single
.在代码中将此值设置为true将导致调试器在该行上停止.
$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();
Run Code Online (Sandbox Code Playgroud)
然后,您的代码将停止在$ DB :: single设置为1的行.
当然,如果您无法确保代码在调试器中运行,那么您将完全遇到另一个问题.您还需要运行代码perl -d
.
您是否尝试将-d开关添加到脚本顶部的shebang行?就像是
#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";
print "Test";
Run Code Online (Sandbox Code Playgroud)
它确实取决于它是如何启动的,但至少在简单的情况下,这应该启动调试器.
编辑:然后,您可以使用特定条件在特定行上设置断点
> b [line] [condition]
Run Code Online (Sandbox Code Playgroud)
并击中
> c
Run Code Online (Sandbox Code Playgroud)
继续运行脚本 - 调试器将在满足条件时停在指定的行