Làm cách nào để sử dụng Debug Backtrace trong magento 2?


Câu trả lời:


17

Bạn có thể sử dụng debug_backtrace()như tôi đã thêm dưới đây.

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

Để tham khảo xin vui lòng kiểm tra dev\tests\api-functional\framework\Magento\TestFramework\TestCase\Webapi\Adapter\Rest\DocumentationGenerator.php


1
Tôi chỉnh sửa câu trả lời của bạn. Có một đoạn cú pháp không chính xác, tôi cũng đã thay đổi nó để có đầu ra tốt hơn (tôi thường @bỏ qua các cảnh báo, chẳng hạn khi 'class'không tồn tại)
7ochem

2
@ krishnaijjadaati95Dev cảm ơn vì câu trả lời phù hợp với tôi
Ashish Madankar M2 Professiona

12

Trong các lớp logger của Magento 2, debug_backtracephương thức này không được sử dụng trực tiếp.

Vì vậy, cách thực hiện backtrace Magento 2 là sử dụng Magento\Framework\Debuglớp (tương đương với Varien_Debuglớp M1 ) và gọi backtrace()phương thức:

/**
 * 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
Đây phải là câu trả lời được chấp nhận.
mpchadwick

5

Trong bất kỳ ứng dụng PHP nào bạn chỉ có thể làm:

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

Do khoảng cách tên trong M2, bạn cần sử dụng new \Exception();thay vì chỉnew Exception();


cảm ơn vì câu trả lời tôi đã thử nhưng nó nói Lớp ngoại lệ 'không tìm thấy trong đường dẫn của lớp gọi của tôi
Ashish Madankar M2 Professiona

@AshishMadankar - xem chỉnh sửa!
Paras Sood

Hoặc ngắn hơn: print_r((new \Exception())->getTraceAsString());(kể từ PHP 5.4, rất an toàn để sử dụng trong M2)
7ochem

1
@ParaSood nó cũng hoạt động
Ashish Madankar M2 Professiona

0

Bạn có thể sử dụng hàm PHP debug_backtrace để gỡ lỗi trong Magento.

Sử dụng mã sau trong magento để theo dõi vấn đề bằng cách sử dụng debug_backtrace

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

Bạn sẽ thấy backtrace gỡ lỗi sẽ cho phép bạn xác định nguồn sự cố và bạn sẽ có ý tưởng làm thế nào để khắc phục vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.