Come usare Debug Backtrace in magento 2?


Risposte:


17

Puoi usare debug_backtrace()come ho aggiunto di seguito.

$debugBackTrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
foreach ($debugBackTrace as $item) {
    echo @$item['class'] . @$item['type'] . @$item['function'] . "\n";
}

Per riferimento consultare dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php


1
Ho modificato la tua risposta. C'era una parte di sintassi errata, inoltre l'ho cambiata per avere un output migliore (ero solito @ignorare gli avvisi, per esempio quando 'class'non esiste)
ottobre

2
@ krishnaijjadaati95Dev grazie per la risposta che funziona per me
Ashish Madankar M2 Professiona

14

Nelle classi logger di Magento 2, il debug_backtracemetodo non viene utilizzato direttamente.

Quindi il modo Magento 2 di fare backtrace è usare la Magento\Framework\Debugclasse (che è l'equivalente della Varien_Debugclasse M1 ) e chiamare il backtrace()metodo:

/**
 * 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
Questa dovrebbe essere la risposta accettata.
mpchadwick,

5

In qualsiasi applicazione PHP puoi semplicemente fare:

$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString()); 
exit;

A causa della spaziatura dei nomi in M2, è necessario utilizzare new \Exception();anziché semplicementenew Exception();


grazie per la risposta che ho provato ma dice che la classe Exception 'non si trova nel percorso della mia classe chiamante
Ashish Madankar M2 Professiona

@AshishMadankar - vedi modifica!
Paras Sood,

O più breve: print_r((new \Exception())->getTraceAsString());(dal PHP 5.4, così sicuro da usare in M2)
7

1
@ParasSood funziona anche
Ashish Madankar M2 Professiona

0

È possibile utilizzare la funzione PHP debug_backtrace per eseguire il debug in Magento.

Usa il seguente codice in magento per tracciare il 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();

Vedrai il backtrace di debug che ti permetterà di definire l'origine del problema e avrai un'idea di come risolvere il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.