php-fpm ชนกับเราและทิ้งไฟล์ไว้
/var/crash/_usr_sbin_php5-fpm.1002.crash
มีข้อมูลบางอย่างในไฟล์นั้น แต่สิ่งที่ฉันตามมาอยู่ในส่วนที่เรียกว่า CoreDump ในรูปแบบที่เข้ารหัส base64 ฉันจะอ่านสิ่งที่ทำงานในเวลาที่เกิดความผิดพลาดได้อย่างไร?
php-fpm ชนกับเราและทิ้งไฟล์ไว้
/var/crash/_usr_sbin_php5-fpm.1002.crash
มีข้อมูลบางอย่างในไฟล์นั้น แต่สิ่งที่ฉันตามมาอยู่ในส่วนที่เรียกว่า CoreDump ในรูปแบบที่เข้ารหัส base64 ฉันจะอ่านสิ่งที่ทำงานในเวลาที่เกิดความผิดพลาดได้อย่างไร?
คำตอบ:
ในกรณีที่คุณไม่ต้องการติดตั้งเครือข่ายย่อยสำหรับapport-retrace
เครื่องมือคุณสามารถแตกรูปแบบ apport เป็นไฟล์แยกต่างหากและใช้การCoreDump
ถ่ายโอนข้อมูลเท่านั้นgdb
ตามปกติ
apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
cd yourNewUnpackDirectoryHere/
gdb `cat ExecutablePath` CoreDump
(ให้ความสนใจกับตัวหนอนที่นี่!)bt
(เอาต์พุตการติดตามกลับจริง)
หมายเหตุ: apport-unpack
บางครั้งจะเกิดข้อผิดพลาดในการดำเนินการ unpack (apport ดูเหมือนจะเสียหายไปหมด ... xD) แต่ CoreDump และไฟล์อื่น ๆ ของคุณจะอยู่ที่นั่นเพียงเพิกเฉยและลบไฟล์. crash ทั้งหมด/var/crash
หลังจากที่คุณย้ายไปที่อื่นเพื่ออนุญาต ระบบเพื่อส่งรายงานความผิดพลาดใหม่จากแอพเดียวกันที่นั่น
ExecutablePath
ขออภัยฉันพลาดว่ามีแฟ้มที่มีชื่อ ฉันคิดว่าผู้อ่านจะต้องกรอกเส้นทางปฏิบัติการที่นั่น
มีเครื่องมือที่เรียกapport-retrace
ว่าอ่านไฟล์. crash และอนุญาตให้คุณเติมไฟล์ด้วยการติดตามสแต็กแบบเต็มสัญลักษณ์หรือรันgdb
เซสชันโดยใช้ core dump ในการเริ่มต้นเซสชั่น gdb apport-retrace -g CRASHFILE.crash
รัน โปรดทราบว่าคุณต้องมีแพ็คเกจ -dbg ติดตั้งเพื่อรับการติดตามสแต็กที่ดี
ดังที่กล่าวไว้ (ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับ PHP) อาจเป็นสิ่งที่คุณเขียนไว้ในไฟล์ใดไฟล์หนึ่งที่ทำให้เกิดการขัดข้อง
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