No magento 1.x, podemos usar o backtrace como
echo Varien_Debug::backtrace(true, true); exit;
Como podemos usar esse recurso no Magento 2?
No magento 1.x, podemos usar o backtrace como
echo Varien_Debug::backtrace(true, true); exit;
Como podemos usar esse recurso no Magento 2?
Respostas:
Você pode usar debug_backtrace()
como eu adicionei abaixo.
$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}
Para referência, verifique
dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php
Nas classes de logger do Magento 2, o debug_backtrace
método não é usado diretamente.
Portanto, a maneira do Magento 2 de fazer backtrace é usar a Magento\Framework\Debug
classe (que é equivalente à Varien_Debug
classe M1 ) e chamar o backtrace()
método:
/**
* 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);
}
Em qualquer aplicativo PHP, você pode fazer:
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
Devido ao espaçamento entre nomes em M2, você precisa usar em new \Exception();
vez de apenasnew Exception();
print_r((new \Exception())->getTraceAsString());
(desde o PHP 5.4, tão seguro para usar no M2)
Você pode usar a função PHP debug_backtrace para depurar no Magento.
Use o código a seguir no magento para rastrear o problema usando debug_backtrace
foreach (debug_backtrace() as $_stack) {
echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
($_stack["line"] ? $_stack["line"] : '') . ' - ' .
($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
}
exit();
Você verá o rastreamento de depuração que permitirá definir a origem do problema e terá uma idéia de como corrigi-lo.
@
para ignorar os avisos, por exemplo, quando'class'
não existe)