Wie verwende ich Debug Backtrace in Magento 2?


Antworten:


17

Sie können verwenden, debug_backtrace()wie ich unten hinzugefügt habe.

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

Als Referenz bitte überprüfen dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php


1
Ich habe deine Antwort bearbeitet. Es gab eine falsche Syntax, außerdem habe ich sie geändert, um eine bessere Ausgabe @zu 'class'
erzielen

2
@ krishnaijjadaati95Dev danke für die Antwort, die es für mich funktioniert
Ashish Madankar M2 Professiona

12

In den Logger-Klassen von Magento 2 wird die debug_backtraceMethode nicht direkt verwendet.

Die Magento 2-Methode zum Zurückverfolgen besteht also darin, die Magento\Framework\DebugKlasse (die der M1- Varien_DebugKlasse entspricht) zu verwenden und die folgende backtrace()Methode aufzurufen :

/**
 * 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);
}

2
Dies sollte die akzeptierte Antwort sein.
mpchadwick

5

In jeder PHP-Anwendung können Sie einfach Folgendes tun:

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

Aufgrund des Namensabstands in M2 müssen Sie new \Exception();statt nur verwendennew Exception();



@AshishMadankar - siehe bearbeiten!
Paras Sood

Oder kürzer: print_r((new \Exception())->getTraceAsString());(seit PHP 5.4, also sicher in M2 zu verwenden)
7ochem

1
@ ParasSood es funktioniert auch
Ashish Madankar M2 Professiona

0

Sie können die PHP-Funktion debug_backtrace zum Debuggen in Magento verwenden.

Verwenden Sie den folgenden Code in Magento, um das Problem mithilfe von debug_backtrace zu verfolgen

foreach (debug_backtrace() as $_stack) {
    echo ($_stack["file"] ? $_stack["file"] : '') . ':' .
        ($_stack["line"] ? $_stack["line"] : '') . ' - ' .
        ($_stack["function"] ? $_stack["function"] : '').'<br/><hr/>';
 }
exit();

Sie sehen den Debug-Backtrace, mit dem Sie die Problemquelle definieren können, und erhalten eine Vorstellung davon, wie Sie das Problem beheben können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.