让我们面对现实吧,debug_backtrace()
输出不是很漂亮。有人编写了包装器吗?
你最喜欢什么漂亮的var_dump()
(它可以在商业项目中使用,所以没有GPL(尽管LGPL也可以))
另请参阅:A more pretty/informative Var_dump alternative in PHP?
<小时/>六年后,这个问题被浏览了一万次,但我仍在使用这个。它在屏幕上看起来并不漂亮,例如 Kint (这非常好)。
它是纯文本,我可以在自动错误报告中通过电子邮件发送给自己,并可以使用 ChromePhp 在浏览器的开发人员控制台中显示。 .
/**
* @brief Returns an HTML formatted string showing details of the backtrace
*
* Example:
*
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:48 e(373, 'beer', 'curry')
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:53 d(26366, 28255, 8364)
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:58 c()
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:63 b(1283, 15488, 29369)
* F:\Dropbox\programs\Xampp\htdocs\api\q.php:72 a(788, 6077, 25010)
*/
function FormatBacktrace()
{
$result = '<h4>Backtrace</h4>';
foreach (debug_backtrace() as $trace)
{
if ($trace['function'] ==__FUNCTION__)
continue;
$parameters = is_array($trace['args']) ? implode(", ",$trace['args']) : "";
if (array_key_exists('class', $trace))
$result .= sprintf("%s:%s %s::%s(%s)<br>",
$trace['file'],
$trace['line'],
$trace['class'],
$trace['function'],
$parameters);
else
$result .= sprintf("%s:%s %s(%s)<br>",
$trace['file'],
$trace['line'],
$trace['function'],
$parameters);
}
return $result;
}
最佳答案
您还有kint
( github repo ) 其中有一个 composer
包上packagist
存储库
因此,要么手动下载库,要么使用composer
下载库。 ,这只是一个问题:
$ composer init
$ composer require raveren/kint
$ composer install
然后,代替 ini_set('display_errors', 'On');
,我更喜欢在我的主(第一个)包含文件中使用这个简单的处理程序:
if ( getenv('__project_env__') === 'DEV') {
error_reporting(E_ALL | E_STRICT);
function shutdown_handler() {
$error = error_get_last();
Kint::trace();
Kint::dump($error);
}
register_shutdown_function('shutdown_handler');
} else {
...
}
与 __project_env__
在 Apache 的 Virtualhost ( SetEnv __project_env__ "DEV"
) 中设置,以免污染 git
的不同分支项目所在的存储库,其配置项本质上是 environmental
- 在 DEV 中:我得到了调试
- 在 PROD 中,默认情况下是静默的
以下是跟踪外观的屏幕截图(每个步骤都是可折叠的):
(来源:github.io)
关于php - 有 pretty-print 堆栈转储吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4282120/