Bagaimana cara menggunakan Debug Backtrace di magento 2?


Jawaban:


17

Anda dapat menggunakan debug_backtrace()seperti yang saya tambahkan di bawah ini.

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

Untuk referensi silakan periksa dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php


1
Saya mengedit jawaban Anda. Ada sepotong sintaks yang salah, juga saya mengubahnya untuk memiliki hasil yang lebih baik (saya biasanya @mengabaikan peringatan, misalnya ketika 'class'tidak ada)
7ochem

2
@ krishnaijjadaati95Dev terima kasih atas jawaban yang berhasil buat saya
Ashish Madankar M2 Professiona

13

Di kelas logger dari Magento 2, debug_backtracemetode ini tidak digunakan secara langsung.

Jadi cara Magento 2 melakukan backtrace adalah dengan menggunakan Magento\Framework\Debugkelas (yang setara dengan Varien_Debugkelas M1 ) dan memanggil backtrace()metode:

/**
 * 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
Ini harus menjadi jawaban yang diterima.
mpchadwick

5

Dalam aplikasi PHP apa pun, Anda cukup melakukan:

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

Karena spasi nama dalam M2, Anda harus menggunakan new \Exception();bukan hanyanew Exception();


terima kasih atas jawaban yang saya coba tetapi ia mengatakan kelas Pengecualian 'tidak ditemukan di jalur kelas panggilan saya
Ashish Madankar M2 Professiona

@AshishMadankar - lihat edit!
Paras Sood

Atau lebih pendek: print_r((new \Exception())->getTraceAsString());(karena PHP 5.4, sangat aman digunakan dalam M2)
7ochem

1
@ParasSood juga berfungsi
Ashish Madankar M2 Professiona

0

Anda dapat menggunakan fungsi debug_backtrace PHP untuk debugging di Magento.

Gunakan kode berikut di magento untuk melacak masalah dengan menggunakan debug_backtrace

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

Anda akan melihat penelusuran balik debug yang akan memungkinkan Anda untuk menentukan sumber masalah dan Anda akan mendapatkan ide bagaimana memperbaiki masalah tersebut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.