在magento 1.x中,我们可以使用像
echo Varien_Debug::backtrace(true, true); exit;
我们如何在Magento 2中使用此功能?
在magento 1.x中,我们可以使用像
echo Varien_Debug::backtrace(true, true); exit;
我们如何在Magento 2中使用此功能?
Answers:
您可以使用debug_backtrace()
我在下面添加的内容。
$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}
供参考,请检查
dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php
在Magento 2的记录器类中,debug_backtrace
不直接使用该方法。
因此,Magento 2进行回溯的方法是使用Magento\Framework\Debug
该类(与M1 Varien_Debug
类等效)并调用该backtrace()
方法:
/**
* Prints or returns a backtrace
*
* @param bool $return return or print
* @param bool $html output in HTML format
* @param bool $withArgs add short arguments of methods
* @return string|bool
*/
public static function backtrace($return = false, $html = true, $withArgs = true)
{
$trace = debug_backtrace();
return self::trace($trace, $return, $html, $withArgs);
}
在任何PHP应用程序中,您都可以执行以下操作:
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
由于M2中的名称间距,您需要使用new \Exception();
而不是new Exception();
print_r((new \Exception())->getTraceAsString());
因为PHP 5.4,所以可以在M2中安全使用)
您可以使用PHP函数debug_backtrace在Magento中进行调试。
在magento中使用以下代码通过使用debug_backtrace跟踪问题
foreach (debug_backtrace() as $_stack) {
echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
($_stack["line"] ? $_stack["line"] : '') . ' - ' .
($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
}
exit();
您将看到调试回溯,您可以通过它来定义问题源,还可以找到解决问题的方法。
@
忽略警告,例如'class'
不存在时的警告)