Dans magento 1.x, nous pouvons utiliser une trace comme
echo Varien_Debug::backtrace(true, true); exit;
Comment pouvons-nous utiliser cette fonctionnalité dans Magento 2?
Dans magento 1.x, nous pouvons utiliser une trace comme
echo Varien_Debug::backtrace(true, true); exit;
Comment pouvons-nous utiliser cette fonctionnalité dans Magento 2?
Réponses:
Vous pouvez utiliser debug_backtrace()
comme je l'ai ajouté ci-dessous.
$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}
Pour référence, veuillez vérifier
dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php
Dans les classes de journalisation de Magento 2, la debug_backtrace
méthode n'est pas utilisée directement.
Donc, la façon dont Magento 2 fait la trace est d'utiliser la Magento\Framework\Debug
classe (qui est l'équivalent de la Varien_Debug
classe M1 ) et d'appeler la backtrace()
méthode:
/**
* 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);
}
Dans n'importe quelle application PHP, vous pouvez simplement faire:
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
En raison de l'espacement des noms en M2, vous devez utiliser new \Exception();
au lieu de simplementnew Exception();
print_r((new \Exception())->getTraceAsString());
(depuis PHP 5.4, donc sûr à utiliser dans M2)
Vous pouvez utiliser la fonction PHP debug_backtrace pour déboguer dans Magento.
Utilisez le code suivant dans magento pour suivre le problème en utilisant debug_backtrace
foreach (debug_backtrace() as $_stack) {
echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
($_stack["line"] ? $_stack["line"] : '') . ' - ' .
($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
}
exit();
Vous verrez la trace de débogage qui vous permettra de définir la source du problème et vous aurez une idée de la façon de résoudre le problème.
@
pour ignorer les avertissements, par exemple quand'class'
n'existe pas)