这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 splain,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
诊断,splain - 产生详细的警告诊断
概要
使用“诊断”编译指示:
使用诊断;
使用诊断 - 详细;
启用诊断;
禁用诊断;
使用“splain”独立过滤程序:
perl 程序 2>diag.out
splain [-v] [-p] 诊断输出
使用诊断从行为异常的脚本中获取堆栈跟踪:
perl -Mdiagnostics=-traceonly my_script.pl
商品描述
- “诊断” 附注
该模块扩展了通常由 perl 编译器和
perl 解释器(通过使用 -w 开关运行 perl 或“使用警告”),增加
在 perldiag 中找到了更详细和更可爱的描述。 像
其他 pragmata,它会影响程序的编译阶段,而不仅仅是程序的编译阶段
执行阶段。
要在您的程序中用作编译指示,只需调用
使用诊断;
在程序的开始(或接近开始)。 (注意这个 不 启用 perl -w
标志。)然后您的整个编译将受到(ed :-)增强诊断的约束。
这些还是出去了 斯特德.
由于运行时和编译时问题之间的交互,并且因为它可能是
无论如何,这不是一个好主意,您可能不会使用“无诊断”来关闭它们
编译时。 但是,您可以在运行时使用 禁用() 和
使能够() 方法来分别关闭和打开它们。
- -冗长 flag 在任何其他诊断之前首先打印出 perldiag 介绍。
$diagnostics::PRETTY 变量可以为寻呼机生成更好的转义序列。
从 perl 本身发出的警告(或更准确地说,那些与描述匹配的警告
在 perldiag 中找到)只显示一次(没有重复的描述)。 用户代码
生成警告 a la 警告() 不受影响,允许重复的用户消息
显示。
当 perl 死掉时,这个模块还会在错误消息中添加一个堆栈跟踪。 这很有用
用于查明导致死亡的原因。 这 -仅跟踪 (要不就 -t) 标志关闭
仅留下堆栈跟踪的警告消息的解释。 所以如果你的脚本是
死了,再运行一次
perl -Mdiagnostics=-traceonly my_bad_script
查看死亡时的调用堆栈。 通过提供 -警告跟踪 (要不就 -w)
标志,发出的任何警告也将带有堆栈跟踪。
- 平面 教学计划
虽然显然是一个完整的程序, 平面 实际上只不过是一个链接
(可执行) 诊断文件 模块,以及指向 诊断程序
文档。 该 -v 标志就像“使用诊断 -verbose”指令。 这 -p 旗
就像 $diagnostics::PRETTY 变量。 由于您要进行后期处理 平面,
没有意义 使能够() or 禁用() 处理。
输出来自 平面 是针对 标准输出,与 pragma 不同。
示例
以下文件肯定会在运行时和编译时触发一些错误:
使用诊断;
无处打印“什么都没有\n”;
打印 STDERR "\n\t这条消息应该是朴素的。\n";
警告“\t这是一个用户警告”;
打印 "\n诊断测试仪:请输入一个这里: ”;
我的 $a, $b = 标量;
打印“\n”;
打印 $x/$y;
如果您更喜欢先运行程序,然后再查看其问题,请执行以下操作:
perl -w test.pl 2>test.out
./splain < test.out
请注意,这在遗产更可疑的贝壳中通常是不可能的,因为
理论
(perl -w test.pl >/dev/tty) >& test.out
./splain < test.out
因为你刚刚移动了现有的 标准输出 到别处。
如果您不想修改源代码,但仍然有即时警告,请执行以下操作:
执行 3>&1; perl -w test.pl 2>&1 1>&3 3>&- | 1>&2 3>&-
漂亮,嗯?
如果您想即时控制警告,请执行以下操作。 确保你做
先“使用”,否则你将无法获得 使能够() or 禁用() 方法。
使用诊断; # 检查整个编译阶段
打印“\n第一次虚假诊断的时间:SQUAWKINGS\n”;
打印 BOGUS1 'nada';
打印“完成第一个伪造\n”;
禁用诊断; # 只关闭运行时警告
打印“\n第二次伪造的时间:(压制)\n”;
打印 BOGUS2 'nada';
打印“完成第二个伪造\n”;
启用诊断; # 重新开启运行时警告
打印 "\n第三个假的时间:SQUAWKINGS\n";
打印 BOGUS3 'nada';
打印“完成第三个伪造\n”;
禁用诊断;
打印“\n第四个假的时间:(被压制)\n”;
打印 BOGUS4 'nada';
打印“完成第四个伪造\n”;
内部人员
诊断消息来自 perldiag.pod 文件在运行时可用。
否则,它们可能会在构建 splain 包时嵌入到文件本身中。 看
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 生成文件 了解详情。
如果发现现存的 $SIG{__WARN__} 处理程序,它将继续受到尊重,但
只有在 诊断::splainthis() 函数(模块的 $SIG{__WARN__}
拦截器)已经解决了您的警告。
如果您非常好奇,可以设置一个 $diagnostics::DEBUG 变量
各种各样的事情正在被拦截。
开始 { $diagnostics::DEBUG = 1 }
使用 onworks.net 服务在线使用 splain