Як використовувати Debug Backtrace в magento 2?


Відповіді:


17

Ви можете використовувати, debug_backtrace()як я додав нижче.

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

Для ознайомлення перевірте dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php


1
Я відредагував вашу відповідь. Був фрагмент невірного синтаксису, також я змінив його на кращий вихід (я @ігнорував попередження, наприклад, коли 'class'його немає)
7

2
@ krishnaijjadaati95Dev дякую за відповідь, яка працює на мене
Ashish Madankar M2 Professiona

14

У класах реєстраторів Magento 2 debug_backtraceметод не використовується безпосередньо.

Тож спосіб Magento 2 робити зворотний шлях - це використовувати Magento\Framework\Debugклас (що еквівалент Varien_Debugкласу M1 ) та викликати backtrace()метод:

/**
 * 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
Це має бути прийнятою відповіддю.
mpchadwick

5

У будь-якому додатку PHP ви можете просто зробити:

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

Через інтервал імен у M2, вам потрібно використовувати new \Exception();замість простоnew Exception();


дякую за відповідь, я спробував це, але в ньому сказано, що виняток класу "не знайдено на шляху мого класу виклику
Ashish Madankar M2 Professiona

@AshishMadankar - дивіться редагування!
Paras Sood

Або коротше: print_r((new \Exception())->getTraceAsString());(оскільки PHP 5.4, настільки безпечний у використанні в M2)
7ochem

1
@ParasSood також працює
Ashish Madankar M2 Professiona

0

Ви можете використовувати функцію PHP debug_backtrace для налагодження в Magento.

Використовуйте наступний код у magento для відстеження проблеми за допомогою debug_backtrace

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

Ви побачите зворотний процес відладки, який дозволить визначити джерело проблеми, і ви отримаєте уявлення про те, як виправити проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.