Trong magento 1.x chúng ta có thể sử dụng backtrace như
echo Varien_Debug::backtrace(true, true); exit;
Làm thế nào chúng ta có thể sử dụng cơ sở này trong Magento 2?
Trong magento 1.x chúng ta có thể sử dụng backtrace như
echo Varien_Debug::backtrace(true, true); exit;
Làm thế nào chúng ta có thể sử dụng cơ sở này trong Magento 2?
Câu trả lời:
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
Trong các lớp logger của Magento 2, debug_backtrace
phươ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\Debug
lớp (tương đương với Varien_Debug
lớ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);
}
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();
print_r((new \Exception())->getTraceAsString());
(kể từ PHP 5.4, rất an toàn để sử dụng trong M2)
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 đề.
@
bỏ qua các cảnh báo, chẳng hạn khi'class'
không tồn tại)