วิธีใช้ Debug Backtrace ใน 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วิธีนี้ไม่ได้ใช้โดยตรง

ดังนั้นวีโอไอพี 2 ในการทำ backtrace คือใช้Magento\Framework\Debugคลาส (ซึ่งเทียบเท่ากับVarien_DebugคลาสM1 ) และเรียกใช้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();


ขอบคุณสำหรับคำตอบที่ฉันพยายาม แต่มันบอกว่าข้อยกเว้นชั้นเรียน 'ไม่พบในเส้นทางของชั้นเรียนของฉัน
Ashish Madankar M2 Professiona

@AshishMadankar - ดูการแก้ไข!
Paras Sood

หรือสั้นกว่า: print_r((new \Exception())->getTraceAsString());(ตั้งแต่ PHP 5.4 ดังนั้นปลอดภัยที่จะใช้ใน M2)
7ochem

1
@ PasSood มันยังทำงานอยู่
Ashish Madankar M2 Professiona

0

คุณสามารถใช้ฟังก์ชัน PHP debug_backtraceเพื่อดีบักใน Magento

ใช้รหัสต่อไปนี้ในวีโอไอพีเพื่อติดตามปัญหาโดยใช้ debug_backtrace

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

คุณจะเห็น backtrace ดีบั๊กที่จะช่วยให้คุณสามารถกำหนดแหล่งที่มาของปัญหาและคุณจะได้รับความคิดวิธีการแก้ไขปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.