Score:1

ฉันจะรับข้อความแสดงข้อผิดพลาดที่ไม่ถูกตัดทอนจาก dblog ได้อย่างไร

ธง ru

"ข้อความบันทึกล่าสุด" มีประโยชน์มากในการติดตามข้อผิดพลาดบนเว็บไซต์ แม้ว่าวิธีนี้จะใช้งานได้ดีกับข้อผิดพลาดในโค้ด PHP แต่ก็มักจะไม่มีประโยชน์สำหรับข้อผิดพลาดในโค้ด Twig เช่น. ฉันมีข้อความแสดงข้อผิดพลาดนี้ในบันทึกของฉัน:

ข้อผิดพลาดของผู้ใช้: "แอตทริบิวต์" เป็นคีย์อาร์เรย์การแสดงผลที่ไม่ถูกต้องใน Drupal\Core\Render\Element::children() (Zeile 98 ใน /web/core/lib/Drupal/Core/Render/Element.php)

#0 /web/core/includes/bootstrap.inc(346): _drupal_error_handler_real(256, '"แอตทริบิวต์" คือ...', '/var/www/vhosts...', 98) #1 [ฟังก์ชันภายใน]: _drupal_error_handler(256, '"แอตทริบิวต์" คือ...', '/var/www/vhosts...', 98, อาร์เรย์)

(อีก 47 บรรทัดที่นี่)

ร่องรอยนี้มี 47 จุด ส่วนใหญ่มาจาก Drupal core เห็นได้ชัดว่าข้อผิดพลาดอยู่ในธีมที่กำหนดเองของฉัน

#11 /web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/w...', อาร์เรย์)

เนื่องจากบรรทัดนี้ ฉันสงสัยว่าหนึ่งในเทมเพลต Twig ที่กำหนดเองของฉันไม่ถูกต้อง แต่ฉันไม่สามารถระบุได้ว่าอันไหน เนื่องจากชื่อไฟล์ที่ถูกตัดออก

ฉันจะรับข้อความแสดงข้อผิดพลาดแบบเต็มของหนึ่งบรรทัดในการติดตามสแต็กได้อย่างไร หากฉันทราบชื่อเต็มของไฟล์ที่กล่าวถึงในบรรทัด #11 จะช่วยแก้ไขข้อผิดพลาดได้อย่างมาก

Score:2
ธง cn

คุณได้รับผลลัพธ์ของ PHP ในตัว backtracing ใช้ Drupal debug_backtrace() เพื่อแสดงและ ข้อยกเว้น::getTraceAsString ถูกเพิ่มสำหรับการเข้าสู่ระบบใน Drupal 8.2.x ดู บันทึกการเปลี่ยนแปลง. วิธีที่สองคือวิธีการย้อนรอยที่รวดเร็วและมีประสิทธิภาพ หน่วยความจำไม่เต็มเมื่อจัดการกับโค้ดที่ซ้อนกันลึก ซึ่งโดยทั่วไปจะใช้กับเทมเพลตการเรนเดอร์ของ Drupal อย่างไรก็ตาม อาจไม่ได้ให้ข้อมูลทั้งหมดที่คุณต้องการ

หากคุณต้องการสแต็กเทรซที่ใช้งานได้อย่างสมบูรณ์ ให้ใช้ Xdebug เพื่อตรวจจับข้อยกเว้น (ไม่จำเป็นต้องใช้เบรกพอยต์)

https://marketplace.visualstudio.com/items?itemName=xdebug.php-debug

xdebug

ru flag
แต่ Xdebug ไม่ได้ช่วยในกรณีเช่นนี้ การตั้งค่าเบรกพอยต์บนฟังก์ชันหลักที่ถูกเรียกเป็นล้านครั้งในระหว่างการร้องขอนั้นไม่มีเหตุผล
cn flag
@Hudri สมมติว่าคุณมี IDE ที่เหมาะสมซึ่งไม่ควรเป็นปัญหา เช่น https://www.jetbrains.com/help/phpstorm/debugging-with-php-exception-breakpoints.html
4uk4 avatar
cn flag
@Hudri ข้อผิดพลาดของ Twig สามารถตรวจจับได้ใน Symfony คุณสามารถเขียนโค้ดของคุณเองเพื่อจัดรูปแบบ backtrace และแทนที่ /core/lib/Drupal/Core/EventSubscriber/ExceptionLoggingSubscriber.php
ru flag
โอ้ ขอบคุณมาก ฉันยังไม่รู้จัก Exception Breakpoints ใน PHPstorm สิ่งนี้จะช่วยได้อย่างมาก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา