ฉันจะอ่านไฟล์ความผิดพลาดจาก / var / crash ได้อย่างไร


20

php-fpm ชนกับเราและทิ้งไฟล์ไว้

/var/crash/_usr_sbin_php5-fpm.1002.crash

มีข้อมูลบางอย่างในไฟล์นั้น แต่สิ่งที่ฉันตามมาอยู่ในส่วนที่เรียกว่า CoreDump ในรูปแบบที่เข้ารหัส base64 ฉันจะอ่านสิ่งที่ทำงานในเวลาที่เกิดความผิดพลาดได้อย่างไร?

คำตอบ:


18

ในกรณีที่คุณไม่ต้องการติดตั้งเครือข่ายย่อยสำหรับapport-retraceเครื่องมือคุณสามารถแตกรูปแบบ apport เป็นไฟล์แยกต่างหากและใช้การCoreDumpถ่ายโอนข้อมูลเท่านั้นgdbตามปกติ

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (ให้ความสนใจกับตัวหนอนที่นี่!)
  4. bt (เอาต์พุตการติดตามกลับจริง)

    หมายเหตุ: apport-unpackบางครั้งจะเกิดข้อผิดพลาดในการดำเนินการ unpack (apport ดูเหมือนจะเสียหายไปหมด ... xD) แต่ CoreDump และไฟล์อื่น ๆ ของคุณจะอยู่ที่นั่นเพียงเพิกเฉยและลบไฟล์. crash ทั้งหมด/var/crashหลังจากที่คุณย้ายไปที่อื่นเพื่ออนุญาต ระบบเพื่อส่งรายงานความผิดพลาดใหม่จากแอพเดียวกันที่นั่น


1
ทำงานเหมือนมีเสน่ห์โดยไม่ต้องติดตั้งapport-retraceขอบคุณ!
greuze

1
@digital_infinity ไม่! ดูด้วยตัวคุณเอง มีความแตกต่างอย่างมากระหว่างก้องและแมวเป็น ...
stamster

2
@stamster คุณพูดถูก ExecutablePathขออภัยฉันพลาดว่ามีแฟ้มที่มีชื่อ ฉันคิดว่าผู้อ่านจะต้องกรอกเส้นทางปฏิบัติการที่นั่น
digital_infinity

15

มีเครื่องมือที่เรียกapport-retraceว่าอ่านไฟล์. crash และอนุญาตให้คุณเติมไฟล์ด้วยการติดตามสแต็กแบบเต็มสัญลักษณ์หรือรันgdbเซสชันโดยใช้ core dump ในการเริ่มต้นเซสชั่น gdb apport-retrace -g CRASHFILE.crashรัน โปรดทราบว่าคุณต้องมีแพ็คเกจ -dbg ติดตั้งเพื่อรับการติดตามสแต็กที่ดี

ดังที่กล่าวไว้ (ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับ PHP) อาจเป็นสิ่งที่คุณเขียนไว้ในไฟล์ใดไฟล์หนึ่งที่ทำให้เกิดการขัดข้อง


4
doesn t seem to work: # Apport-หวน -G-_usr_sbin_php5 fpm.1002.crash ข้อผิดพลาด: ไฟล์รายงานไม่ได้มีหนึ่งในช่องที่จำเป็นต้อง: coredump DistroRelease แพคเกจ ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369

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