如何将堆栈跟踪(Carp 输出)转储到 Perl 中的文件?

Posted

技术标签:

【中文标题】如何将堆栈跟踪(Carp 输出)转储到 Perl 中的文件?【英文标题】:How do I dump a stacktrace (Carp output) to a file in Perl? 【发布时间】:2011-02-28 20:40:44 【问题描述】:

我想将 Carp 的输出转储到 perl 中的文件句柄,而不是 stderr。

文件句柄已经打开。

最简单的方法是什么?

示例:

use strict;
use warnings;
use FileHandle;
use Carp;

my $fh = new FileHandle("log", "w") || croak "could not write 'log'";
# stuff happens
print $fh carp("stack trace");
close($fh);

示例将在日志中打印“1”,因为那是 carp 的返回值。

【问题讨论】:

【参考方案1】:
print $fh "stack trace";
print $fh Carp::longmess();

【讨论】:

无需将其分成两个打印件:print $fh "stack trace:\n", Carp::longmess();

以上是关于如何将堆栈跟踪(Carp 输出)转储到 Perl 中的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何转储 goroutine 堆栈跟踪?

从核心转储中获取堆栈跟踪

如何让android打印掉崩溃系统应用程序的核心转储?

有没有办法在不抛出异常的情况下转储堆栈跟踪?

如何将堆栈跟踪发送到 log4j?

Grails:将堆栈跟踪记录到标准输出