Comment utiliser Debug Backtrace dans magento 2?


Réponses:


17

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


1
J'ai édité votre réponse. Il y avait un morceau de syntaxe incorrecte, aussi je l'ai changé pour avoir une meilleure sortie (j'ai utilisé @pour ignorer les avertissements, par exemple quand 'class'n'existe pas)
7ochem

2
@ krishnaijjadaati95Dev merci pour la réponse que cela fonctionne pour moi
Ashish Madankar M2 Professiona

14

Dans les classes de journalisation de Magento 2, la debug_backtraceméthode n'est pas utilisée directement.

Donc, la façon dont Magento 2 fait la trace est d'utiliser la Magento\Framework\Debugclasse (qui est l'équivalent de la Varien_Debugclasse 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);
}

4
Cela devrait être la réponse acceptée.
mpchadwick

5

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


merci pour la réponse j'ai essayé cela mais il dit classe Exception 'introuvable dans le chemin de ma classe appelante
Ashish Madankar M2 Professiona

@AshishMadankar - voir modifier!
Paras Sood

Ou plus court: print_r((new \Exception())->getTraceAsString());(depuis PHP 5.4, donc sûr à utiliser dans M2)
7ochem

1
@ParasSood ça marche aussi
Ashish Madankar M2 Professiona

0

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.