ass*_*sin 5 debugging perl compiler-errors
我有一个perl脚本,当我尝试使用-d开关在调试模式下运行时,运行正常.当我使用-d开关时,我得到一个编译错误,如:
Loading DB routines from perl5db.pl version 1.33
Editor support available.
Enter h or `h h' for help, or `perldoc perldebug' for more help.
main::(..\..\bin\testnbestrover1.pl:23):
23: binmode STDOUT, ":utf8";
Access is denied.
Unknown error
Compilation failed in require at //fbl/NAS/PUB/RapTools/Perl64/lib/Term/ReadLine
/Perl.pm line 65.
at //fbl/NAS/PUB/RapTools/Perl64/lib/Term/ReadLine/Perl.pm line 65
Term::ReadLine::Perl::new('Term::ReadLine', 'perldb', 'GLOB(0x382418)',
'GLOB(0x322c30)') called at //fbl/NAS/PUB/RapTools/Perl64/lib/perl5db.pl line 60
68
DB::setterm called at //fbl/NAS/PUB/RapTools/Perl64/lib/perl5db.pl line
2241
DB::DB called at ..\..\bin\testnbestrover1.pl line 23
Attempt to reload Term/ReadLine/readline.pm aborted.
Compilation failed in require at //fbl/NAS/PUB/RapTools/Perl64/lib/Term/ReadLine
/Perl.pm line 65.
END failed--call queue aborted at ..\..\bin\testnbestrover1.pl line 65.
at ..\..\bin\testnbestrover1.pl line 65
Run Code Online (Sandbox Code Playgroud)
当我在没有-d开关的情况下运行脚本时,不会发生这种情况.关于这里可能出错的任何想法?
谢谢!
编辑:如果我注释掉binmode STDOUT,":utf8",则会出现Term/ReadLine/Perl.pm第65行中的相同错误.声明.在Web上搜索此特定错误后,我发现其他人在使用">"运算符将其STDOUT重定向到文件时遇到了同样的错误.事实证明,我的perl命令做了同样的事情,当我删除它时,调试器工作正常.似乎是特定perl调试器的问题(即per5db.pl版本1.33)?
堆栈跟踪表明问题来自从调试器加载的 Term::ReadLine::Perl。因此,没有调试 -> 没有加载调试器 -> 没有加载 Term::ReadLine::Perl -> 没有错误。
通过查看 Term::ReadLine::Perl 我猜想问题出在它尝试加载 Term::ReadLine::readline 的行中,它尝试使用 STDIN、STDOUT 等执行一些操作以将其用作终端。因为这实际上意味着某些字节序列具有特殊含义(转义和控制代码,例如重置终端、切换线路模式、回显等),这可能会推断出您的 binmode STDOUT 设置。
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |