ฉันพยายามค้นหาสาเหตุของการขัดข้องสำหรับหนึ่งในแอปพลิเคชัน Linux ของฉัน แต่ฉันไม่รู้ว่าแกนกลางกำลังจะไปไหน
cat /proc/sys/kernel/core_pattern
core.%e.%p
ความคิดใด ๆ
ฉันพยายามค้นหาสาเหตุของการขัดข้องสำหรับหนึ่งในแอปพลิเคชัน Linux ของฉัน แต่ฉันไม่รู้ว่าแกนกลางกำลังจะไปไหน
cat /proc/sys/kernel/core_pattern
core.%e.%p
ความคิดใด ๆ
คำตอบ:
ดัมพ์หลักถูกเขียนในไดเร็กทอรีปัจจุบันของกระบวนการ ณ เวลาที่เกิดความผิดพลาด
แน่นอนว่าต้องมีการเปิดใช้งานการทิ้งขยะหลักโดยค่าเริ่มต้นนั้นจะถูกปิดใช้งาน ตรวจสอบผลลัพธ์ของulimit -c
ถ้าเป็น 0 จะไม่มีการเขียนไฟล์คอร์ เรียกใช้ulimit -c unlimited
เพื่อเปิดใช้งานการถ่ายโอนข้อมูลหลัก นี่เป็นการตั้งค่าแบบต่อกระบวนการซึ่งสืบทอดโดยกระบวนการที่เริ่มโดยกระบวนการนั้น
หากการถ่ายโอนข้อมูลหลักควรถูกสร้างขึ้น แต่คุณไม่ทราบว่าอยู่ที่ไหนคุณสามารถเริ่มต้นกระบวนการอีกครั้ง (ถ้ามันจะไม่หยุดทำงานทันที) จากนั้นตรวจสอบไดเรกทอรีการทำงานโดยทำls -l /proc/$pid/cwd
ที่$pid
ID กระบวนการของกระบวนการ ลิงก์นั้นจะชี้ไปยังไดเรกทอรีการทำงานปัจจุบันของกระบวนการนั้น โอกาสที่การถ่ายโอนข้อมูลหลักจะอยู่ที่นั่น มิฉะนั้นคุณจะต้องทำงานfind
ในระบบทั้งหมด ...
ระบบที่ใช้systemdมักจะถูกกำหนดค่าให้ดัมพ์คอร์
/var/lib/systemd/coredump/
คุณอาจใช้coredumpctl
คำสั่งเพื่อแสดงรายการการถ่ายโอนข้อมูลหลัก ดูเพิ่มเติมที่ coredumps-after-migrating-to-systemd