Como usar o Debug Backtrace no magento 2?

16

No magento 1.x, podemos usar o backtrace como

echo Varien_Debug::backtrace(true, true); exit;

Como podemos usar esse recurso no Magento 2?

Ashish Madankar M2 Professiona
fonte

Respostas:

17

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

Krishna ijjada
fonte
1
Eu editei sua resposta. Havia um pedaço de sintaxe incorreta, também eu mudei para ter melhor saída (I utilizado @para ignorar os avisos, por exemplo, quando 'class'não existe)
7ochem
2
@ krishnaijjadaati95Dev obrigado pela resposta que funciona para mim #
Ashish Madankar M2 Professiona
13

Nas classes de logger do Magento 2, o debug_backtracemétodo não é usado diretamente.

Portanto, a maneira do Magento 2 de fazer backtrace é usar a Magento\Framework\Debugclasse (que é equivalente à Varien_Debugclasse 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);
}
Raphael na Digital Pianism
fonte
4
Essa deve ser a resposta aceita.
precisa saber é o seguinte
5

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();

Paras Sood
fonte
obrigado pela resposta eu tentei isso, mas ele diz classe Exceção 'não encontrada no caminho da minha classe de chamada
Ashish Madankar M2 Professiona
@AshishMadankar - veja a edição!
Paras Sood
Ou mais curto: print_r((new \Exception())->getTraceAsString());(desde o PHP 5.4, tão seguro para usar no M2)
7ochem
1
@ParasSood sua também trabalhando
Ashish Madankar M2 Professiona
0

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.

DJ Dev
fonte