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 yourNewUnpackDirectoryHerecd 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