¿Cómo usar Debug Backtrace en magento 2?

16

En magento 1.x podemos usar traza inversa como

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

¿Cómo podemos usar esta instalación en Magento 2?

Ashish Madankar M2 Professiona
fuente

Respuestas:

17

Puede usar debug_backtrace()como agregué a continuación.

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

Para referencia, consulte dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php

Krishna ijjada
fuente
1
Edité tu respuesta. Había una sintaxis incorrecta, también la cambié para tener una mejor salida (solía @ignorar las advertencias, por ejemplo cuando 'class'no existe)
7ochem
2
@ krishnaijjadaati95Dev gracias por la respuesta que funciona para mí
Ashish Madankar M2 Professiona
13

En las clases de registrador de Magento 2, el debug_backtracemétodo no se usa directamente.

Entonces, la forma de Magento 2 de hacer un seguimiento es usar la Magento\Framework\Debugclase (que es el equivalente de la Varien_Debugclase M1 ) y llamar al 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 en Digital Pianism
fuente
44
Esta debería ser la respuesta aceptada.
mpchadwick
5

En cualquier aplicación PHP puedes hacer:

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

Debido al espaciado de nombres en M2, debe usar en new \Exception();lugar de solonew Exception();

Paras Sood
fuente
gracias por la respuesta que probé pero dice Excepción de clase 'no se encuentra en la ruta de mi clase de llamada
Ashish Madankar M2 Professiona
@AshishMadankar - ¡mira editar!
Paras Sood
O más corto: print_r((new \Exception())->getTraceAsString());(desde PHP 5.4, tan seguro de usar en M2)
7ochem
1
@ParasSood también está funcionando
Ashish Madankar M2 Professiona
0

Puede usar la función PHP debug_backtrace para depurar en Magento.

Use el siguiente código en magento para rastrear el 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();

Verá el seguimiento de depuración que le permitirá definir la fuente del problema y tendrá una idea de cómo solucionar el problema.

DJ Dev
fuente