我经常处理Magento的故障排除,并发现这些跟踪提供了很好的信息,但往往很短。
我不知道Magento内部,但我相信它与PHP debug_backtrace
功能有关?
如果是这种情况,我怎样才能更改输出跟踪的大小以查找我能够重现的错误?是否需要更改高级别设置(例如使用ini_set
),还是需要编辑核心代码?
答案 0 :(得分:1)
如果你问第二个论点,那么很遗憾没有简单的方法可以做到这一点。 debug_backtrace
函数在app/code/core/Mage/Core/functions.php::mageDebugBacktrace
中调用,没有参数。因此,更改它的唯一方法是将完整文件复制到app/code/local/Mage/Core/functions.php
并根据需要进行修改。然而,这种做法有一些负面影响,不鼓励使用。
答案 1 :(得分:1)
简短版本:你不能使用像xDebug这样的东西,它会非常慢。
记录的异常不包含代码的完整“跟踪”。开箱即用的PHP不会跟踪这些信息。 debug_backtrace
返回的输出为a call stack。调用堆栈返回到达当前深度所需的函数/方法调用。例如
function a(){
b();
c();
}
function c()
{
d();
}
function d()
{
//DEBUG HERE
}
//start program
a();
如果你在//DEBUG HERE
函数上有一个调用堆栈,你就会得到
a();
c();
d();
函数b()
不会包含在内,因为它已被调用。 此是PHP能够返回的唯一信息。完整的回溯将包含大量的信息,性能将停滞不前。
如果你想要一个完整的功能跟踪,你需要安装像xDebug这样的扩展,并使用它tracing features。但是,这不适合生产商店,只有太多的信息需要跟踪。