continue 命令忽略断点
continue command ignores breakpoints
我在使用 CPAN 时遇到错误,并且由于输出相当无用,因此求助于调试它。
$ perl -d /usr/bin/cpan CPAN
Loading DB routines from perl5db.pl version 1.33
<...>
main::(/usr/bin/cpan:2): eval 'exec /usr/bin/perl -S [=10=] ${1+"$@"}'
main::(/usr/bin/cpan:3): if $running_under_some_shell;
DB<1> b /usr/lib/perl5/5.14/HTTP/Tiny.pm:125
DB<2> L
/usr/bin/cpan:
2: eval 'exec /usr/bin/perl -S [=10=] ${1+"$@"}'
break if (/usr/lib/perl5/5.14/HTTP/Tiny.pm:125)
DB<2> c
在c
之后,程序运行完成,忽略断点。
/usr/lib/perl5/5.14/HTTP/Tiny.pm:125
是以下行,在任何条件块之外。
my $request = {
method => $method,
scheme => $scheme,
host_port => ($port == $DefaultPort{$scheme} ? $host : "$host:$port"),
uri => $path_query,
headers => {},
};
在第 142 行设置一个中断(这会导致我正在调试的错误)没有任何区别。
从 L
输出来看,断点似乎设置在当前行而不是我需要的行。但是,perldebug
将 b file:line
列为有效语法。
该语法可能是新添加的,我也无法在此处使用它。我在 Unix 上有 5.8.8,在 Windows 上有 5.10.1,两者似乎都不起作用。我像你一样在当前行上得到断点(它将整个字符串视为一个条件)。
我建议使用下面的另一种语法。
方法中断:
b HTTP::Tiny::some_method
Select 文件,换行(它匹配路径,而不是模块名称空间):
f HTTP/Tiny
b 125
如果它们在运行时使用 require 或 eval 加载,调试器还不知道该模块,因此您可以先在调试器中键入 use HTTP::Tiny
以强制加载它。
我在使用 CPAN 时遇到错误,并且由于输出相当无用,因此求助于调试它。
$ perl -d /usr/bin/cpan CPAN
Loading DB routines from perl5db.pl version 1.33
<...>
main::(/usr/bin/cpan:2): eval 'exec /usr/bin/perl -S [=10=] ${1+"$@"}'
main::(/usr/bin/cpan:3): if $running_under_some_shell;
DB<1> b /usr/lib/perl5/5.14/HTTP/Tiny.pm:125
DB<2> L
/usr/bin/cpan:
2: eval 'exec /usr/bin/perl -S [=10=] ${1+"$@"}'
break if (/usr/lib/perl5/5.14/HTTP/Tiny.pm:125)
DB<2> c
在c
之后,程序运行完成,忽略断点。
/usr/lib/perl5/5.14/HTTP/Tiny.pm:125
是以下行,在任何条件块之外。
my $request = {
method => $method,
scheme => $scheme,
host_port => ($port == $DefaultPort{$scheme} ? $host : "$host:$port"),
uri => $path_query,
headers => {},
};
在第 142 行设置一个中断(这会导致我正在调试的错误)没有任何区别。
从 L
输出来看,断点似乎设置在当前行而不是我需要的行。但是,perldebug
将 b file:line
列为有效语法。
该语法可能是新添加的,我也无法在此处使用它。我在 Unix 上有 5.8.8,在 Windows 上有 5.10.1,两者似乎都不起作用。我像你一样在当前行上得到断点(它将整个字符串视为一个条件)。
我建议使用下面的另一种语法。
方法中断:
b HTTP::Tiny::some_method
Select 文件,换行(它匹配路径,而不是模块名称空间):
f HTTP/Tiny
b 125
如果它们在运行时使用 require 或 eval 加载,调试器还不知道该模块,因此您可以先在调试器中键入 use HTTP::Tiny
以强制加载它。