วิธีสร้างสแต็กการติดตามตามข้อผิดพลาด


20

ฉันดูแลระบบพยายามที่จะแก้ปัญหาเว็บไซต์ Drupal ในบันทึกเซิร์ฟเวอร์ของฉันฉันสามารถเห็น Drupal ทำการร้องขอเดียวกันซ้ำแล้วซ้ำอีกในอินสแตนซ์ Solr ของเราจนกระทั่ง PHP หมดหน่วยความจำในที่สุดและ Apache ส่งคืนข้อผิดพลาด 500

ฉันจะกำหนดค่า Drupal เพื่อบันทึกการติดตามสแต็คที่ใดที่หนึ่งบนดิสก์ได้อย่างไร

คำตอบ:


15

คุณสามารถใช้โมดูลDevelและเลือกหนึ่งในตัวเลือก "Krumo Backtrace" ที่มีให้ในหน้าการกำหนดค่าที่ admin / config / development / devel

Krumo Backtrace

ตรวจสอบให้แน่ใจว่าได้ไปที่ admin / config / development / logging แล้วเลือก "ข้อผิดพลาดและคำเตือน" หรือ "ข้อความทั้งหมด" หากคุณมีโมดูล Syslog หรือโมดูลการบันทึกอื่น ๆ ที่เปิดใช้งานคุณอาจต้องปิดการใช้งานและเปิดใช้งานโมดูล Dblog

การกำหนดค่า backtrace


6
ฉันพบวิธีนี้ล้มเหลวในการให้ backtrace krumo สำหรับข้อยกเว้นบางอย่างเช่นการเข้าถึงคุณสมบัติที่ไม่มีอยู่จริงบนEntityMetadataWrapperวัตถุ
artfulrobot

3
สำหรับข้อผิดพลาด EntityMetadataWrapper ให้ไปที่บรรทัดในรายงานข้อผิดพลาดและแทรกddebug_backtrace();ก่อนบรรทัดนั้น อย่าลืมลบแน่นอน!
Duncanmoo

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

1

ในระบบ drupal ของคุณในส่วนโมดูลภายใต้โมดูลหลักของพวกเขาคือโมดูล syslog เพื่อเก็บบันทึกในดิสก์ หวังว่ามันจะช่วยให้สิ่งที่คุณกำลังมองหา


1
สิ่งนี้ไม่สามารถใช้งานได้กับข้อผิดพลาดร้ายแรง (เช่นข้อผิดพลาดหน่วยความจำไม่เพียงพอ) ขออภัย
stefgosselin

0

สำหรับ Drupal 7 และ 8 โมดูลตรวจสอบนั้นยอดเยี่ยมสำหรับ backtraces

มันสามารถเพิ่มลงในไฟล์หรือบันทึกในฐานข้อมูล Drupal แทนการแสดงมันซึ่งมีประโยชน์ในกรณีที่ Krumo backtrace ddebug_backtrace()และโซลูชั่นอื่น ๆ ที่สร้างผลลัพธ์บนหน้าจอโดยตรงล้มเหลว นั่นเป็นกรณีของข้อผิดพลาดและข้อยกเว้นที่เกิดขึ้นก่อนการแสดงผลเอาต์พุตเริ่มต้น

พื้นที่การตั้งค่าแบ็คเอนด์ผู้ดูแลระบบสำหรับการตรวจสอบมีการอ้างอิงที่ดีอย่างรวดเร็วสำหรับการใช้งานในรหัส


2
ฉันแหย่ไปรอบ ๆ ในinspectเอกสาร แต่ฉันไม่เห็นวิธีที่ใช้ในการสร้างกองติดตามเมื่อข้อผิดพลาด นั่นเป็นสิ่งที่สามารถทำได้หรือไม่?
Ken Williams

0

Traceโมดูลทำงานที่ดีมากสำหรับสถานการณ์ของฉัน

นี่คือเครื่องมือดูแลระบบ & นักพัฒนาที่เพิ่มสิ่งอำนวยความสะดวกการติดตามที่ครอบคลุมสำหรับการร้องขอของ Drupal การสอบถามฐานข้อมูลและข้อผิดพลาดของ PHP

คุณสมบัติบางอย่างที่มีให้ในรุ่น 1.0 โมดูลนี้:

  • เอาต์พุตข้อความติดตามไปยังไฟล์หรือ syslog (บนแพลตฟอร์ม Unix)
  • ติดตามการเรียกขอของ Drupal ด้วยตัวเลือกเสริมและการติดตามสแต็ก
  • ติดตามคำเตือนและข้อผิดพลาดของ PHP ด้วยการติดตามสแต็กแบบเต็มที่เป็นตัวเลือก
  • ติดตามเคียวรีฐานข้อมูล SQL ด้วยการกรองทางเลือกตามชนิดเคียวรี
  • เอาต์พุตการติดตามรวมถึงข้อมูลการจับเวลาระดับไมโครวินาที
  • การติดตามสแต็กรวมถึงอาร์กิวเมนต์ที่ส่งผ่านของฟังก์ชันในไวยากรณ์ PHP
  • เอาต์พุตการดีบักเพิ่มเติมรวมถึง PHP superglobals และส่วนหัว HTTP
  • กำหนด hook ที่อนุญาตให้โมดูลอื่นขยายเป้าหมายเอาต์พุตการติดตาม

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