magento 1.x에서는 다음과 같은 역 추적을 사용할 수 있습니다
echo Varien_Debug::backtrace(true, true); exit;
Magento 2에서이 기능을 어떻게 사용할 수 있습니까?
magento 1.x에서는 다음과 같은 역 추적을 사용할 수 있습니다
echo Varien_Debug::backtrace(true, true); exit;
Magento 2에서이 기능을 어떻게 사용할 수 있습니까?
답변:
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
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);
}
모든 PHP 응용 프로그램에서 다음을 수행 할 수 있습니다.
$e = new \Exception();
echo '<pre>';
print_r($e->getTraceAsString());
exit;
M2의 이름 간격으로 인해 new \Exception();
그냥 대신 사용해야 합니다.new Exception();
print_r((new \Exception())->getTraceAsString());
(PHP 5.4부터 M2에서 사용하기에 안전)
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();
이슈 소스를 정의 할 수있는 디버그 백 트레이스가 표시되며 문제를 해결하는 방법을 알 수 있습니다.
@
예를 들어'class'
존재하지 않을 때 경고를 무시 하는 데 사용됨 )