42

我现在正在使用这个:

error_log(serialize(debug_backtrace()));

但我每次都必须反序列化它。有没有更好的方法来存储回溯?

4

6 回答 6

59

这应该生成一个可读的字符串:

error_log(print_r(debug_backtrace(), true));

此外,debug_print_backtrace()将回溯打印为字符串,并且可以使用常规输出缓冲区函数捕获其输出:

ob_start();
debug_print_backtrace();
error_log(ob_get_clean());
于 2011-12-03T17:04:35.857 回答
18

从我的角度来看,最好的方法是使用异常功能:

$e = new Exception();
$e->getTraceAsString();
于 2016-11-09T13:16:26.203 回答
8
    $log = var_export(debug_backtrace(), true);

然后使用该变量$log登录文件或其他任何内容。

于 2012-06-07T04:07:17.290 回答
4

有点难看但可行,我这样做:

 error_log('Identifying string so that it doesn\'t just end up as gibberish' . json_encode(debug_backtrace()));
于 2011-12-03T17:01:47.897 回答
2

对于那些可能想要更紧凑版本的人来说,这也可以解决问题:

error_log((new Exception())->getTraceAsString())
于 2020-07-18T14:47:40.373 回答
0

以下内容可以写入 .txt 文件,也可以访问它的内容(如 $content[0]),而不是 var_export,我发现这有点棘手:

    $content = unserialize(serialize(debug_backtrace()));
于 2019-04-17T05:53:09.863 回答