ฉันจะหา core dump ได้ที่ไหนใน Ubuntu 16.04LTS


14

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

ฉันเหนื่อย

ulimit -c unlimited
ulimit -a

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

หาได้ที่ไหน


ไดเรกทอรีปัจจุบันหรือ/var/crash
waltinator

4
ในขณะที่เป็นจริงในกรณีส่วนใหญ่ @waltinator บางครั้งก็จำเป็นต้องตรวจสอบ/var/log/apport.logเพราะเวอร์ชัน Ubuntu สมัยใหม่ใช้ Apport ซึ่งสามารถรบกวนการถ่ายโอนข้อมูลหลักในรูปแบบที่ไม่ชัดเจน ดูstackoverflow.com/a/18368068/1772379สำหรับข้อมูลเพิ่มเติม
Ben Johnson

คำตอบ:


12

ใน Ubuntu ทิ้งหลักจะถูกจัดการโดยApport/var/crash/และสามารถอยู่ใน แต่จะถูกปิดใช้งานตามค่าเริ่มต้นในการวางจำหน่ายที่เสถียร

ต้องการเปิดใช้งาน Apport เรียกใช้: หรือsudo systemctl enable apport.servicesudo service apport start


หากต้องการปิดใช้งานให้เรียกใช้: sudo systemctl disable apport.serviceหรือsudo service apport stopเพื่อกลับสู่วิธีการถ่ายโอนข้อมูลหลักปกติ ดู: ฉันจะเปิดใช้งานหรือปิดใช้งาน Apport ได้อย่างไร .

หากต้องการปิดใช้งานอย่างถาวรให้แก้ไข/etc/apport/crashdb.confไฟล์และแสดงความคิดเห็นในบรรทัดต่อไปนี้:

'problem_types': ['Bug', 'Package'],

โดยการเพิ่มสัญลักษณ์แฮช ( #) ในตอนต้นของบรรทัด

หากต้องการปิดใช้งานการรายงานข้อขัดข้อง (กลับเป็นปกติ) ให้ลบสัญลักษณ์แฮช (เหมือนกับที่เคยเป็น)


คุณยังสามารถตรวจสอบcore_patternได้ว่าเคอร์เนลหลักถูกจัดการโดยเคอร์เนลอย่างไร:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c

ดังนั้นแม้กระทั่งไฟล์หลักถูกปิดใช้งานโดยulimit, apportจะยังคงจับความผิดพลาด

ดูสิ่งนี้ด้วย:


4

สำหรับ googlin ': (ในกรณีของฉัน - Ubuntu 16.04 และ 18.04 และแอปที่กำหนดเอง) /var/crashยังคงว่างเปล่าดังนั้นวิธีที่รวดเร็วในการจัดการการสร้างหลัก (โดยคุณต้องใช้การตั้งค่า ulimit builtin ที่เกี่ยวข้อง ) คือ

sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation

และ

systemctl restart apport # to restore default apport settings
# which, by the way, were "|/usr/share/apport/apport %p %s %c %d %P" (without quotes)


แหล่งที่มา:


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