magento 2에서 디버그 역 추적을 사용하는 방법은 무엇입니까?


16

magento 1.x에서는 다음과 같은 역 추적을 사용할 수 있습니다

echo Varien_Debug::backtrace(true, true); exit;

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 답변 해 주셔서 감사합니다.
Ashish Madankar M2 Professiona

14

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

4
이것이 정답입니다.
mpchadwick

5

모든 PHP 응용 프로그램에서 다음을 수행 할 수 있습니다.

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

M2의 이름 간격으로 인해 new \Exception();그냥 대신 사용해야 합니다.new Exception();


답변 주셔서 감사합니다 내가 시도했지만 그것은 클래스 Exception '내 호출 클래스의 경로에서 찾을 수 없습니다
Ashish Madankar M2 Professiona

@AshishMadankar-편집 참조!
Paras Sood

또는 더 짧음 : print_r((new \Exception())->getTraceAsString());(PHP 5.4부터 M2에서 사용하기에 안전)
7ochem

1
@ParasSood도 작동
Ashish Madankar M2 Professiona

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.