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'が存在しない場合など、無視していた)
7ochem

2
@ krishnaijjadaati95Devそれが私のために働く答えに感謝
アシシュ・マダンカルM2プロフェッショナル2017

12

Magento 2のロガークラスでは、debug_backtraceメソッドは直接使用されません。

したがって、バックトレースを行うMagento 2の方法は、Magento\Framework\Debugクラス(M1 Varien_Debugクラスに相当)を使用して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);
}

3
これは受け入れられる答えになるはずです。
mpchadwick 2017

5

どのPHPアプリケーションでも、次のことができます。

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

M2の名前間隔のためnew \Exception();、単にではなく、new Exception();


私はそれを試した答えに感謝しますが、それは私の呼び出しクラスのパスにクラス例外が見つからないことを言います
アシシュ・マダンカルM2プロフェッシャ

@AshishMadankar-編集を参照してください!
Paras Sood 2017年

以下:print_r((new \Exception())->getTraceAsString());(PHP 5.4以降、M2で使用しても安全)
7ochem

1
@ParasSoodも機能する
Ashish Madankar M2 Professiona 2017

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

問題のソースを定義できるデバッグバックトレースが表示され、問題の修正方法がわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.