ไม่มีการทิ้งหลักหลังจากอัปเกรดเป็น systemd หรือไม่


12

เมื่อฉันรันโปรแกรมที่ฉันทำงานมันล้มเหลวด้วยข้อความต่อไปนี้:

...
Aborted (core dumped)

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

เมื่อฉันวิ่งulimit -aฉันจะกลับมา

$ ulimit -a
core file size          (blocks, -c) unlimited
...

จุดอื่น ๆ

  • ฉันตรวจสอบแล้วว่าผู้ใช้ของฉันสามารถสร้างไฟล์ในไดเรกทอรีปัจจุบันได้
  • /proc/sys/fs/suid_dumpableฉันอ่านเกี่ยวกับ ปัจจุบันมันถูกตั้งค่าเป็น 0 ในเครื่องของฉัน ฉันพยายามเปลี่ยนเป็น 1 หรือ 2 แต่ไม่แตกต่างกัน
  • ฉันยังพยายามรันโปรแกรมในฐานะ root แต่นั่นก็ไม่ได้สร้างความแตกต่างเช่นกัน

น่าเสียดายที่ฉันจำไม่ได้เมื่อฉันสามารถผลิตคอร์ดัลที่ประสบความสำเร็จครั้งล่าสุด

คำตอบ:


8

จากเอกสารบนcoredump.conf,

หากต้องการปิดใช้งานไฟล์การกำหนดค่าที่ผู้จำหน่ายจัดหาให้วิธีที่แนะนำคือการวาง symlink ไว้/dev/nullในไดเรกทอรีการกำหนดค่า/etc/ด้วยชื่อไฟล์เดียวกับไฟล์การกำหนดค่าของผู้จัดจำหน่าย

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

ตั้งแต่ systemd สิ่งต่าง ๆ มีการจัดการที่แตกต่างกัน


ว้าวคุณพูดถูก! เมื่อไม่นานมานี้ฉันเปลี่ยนเป็น systemd sudo systemd-coredumpctlแสดงการดัมพ์หลักที่หายไปทั้งหมด โซลูชันของคุณใช้งานได้ แต่หลังจากรีบูตระบบเท่านั้น
Philipp Claßen

1
systemd's systemd-sysctl.serviceวิ่งเพียงsysctlที่จุดที่เหมาะสมของการบูตและจับ rerunning ด้วยมือกับการเปลี่ยนแปลง และอย่าไปสร้าง / เขียนทับไฟล์กำหนดค่าโดยไม่ตรวจสอบสิ่งที่มันมีอยู่และเนื้อหาของมัน
vonbrand

1
ไฟล์ที่ดูเหมือนว่าจะเปลี่ยนชื่อ50-coredump.confในการสั่งซื้อเพื่อนำไปใช้การตั้งค่าในการบูตปัจจุบันผมต้องวิ่งการเปลี่ยนแปลงการตั้งค่าด้วยตนเอง sysctl ดูstackoverflow.com/q/2065912/427545
Lekensteyn

2
เพื่อคืนค่าเริ่มต้นอย่าตั้งค่าสตริงว่างใช้สิ่งนี้แทน:sysctl -w kernel.core_pattern="core"
Lekensteyn

2

คุณอาจต้องการใช้coredumpctlคำสั่งเพื่อดึงข้อมูลดัมพ์หลักของคุณหรือรัน gdb บนคำสั่งนั้น นั่นเป็นวิธีการ 'systemd ที่ได้รับการอนุมัติ' เพื่อจัดการกับพวกเขา : - /

ในแง่หนึ่งมันเป็นเรื่องที่ดีที่ systemd กำลังจับทุกสิ่งเหล่านี้เพราะมันจะลบทิ้งโดยอัตโนมัติหลังจากที่ในขณะนั้นและทำให้ง่ายต่อการอัพโหลดการถ่ายโอนข้อมูลผิดพลาดสำหรับรายงานข้อผิดพลาด

แต่มันเป็นการเปลี่ยนแปลงที่สั่นสะเทือนด้วยวิธีการแจ้งเตือนหรือคำแนะนำเล็กน้อยสำหรับผู้ที่รู้ว่า coredumps ทำงานอย่างไรก่อนที่ systemd จะเข้ามามีส่วนร่วม แม้แต่การวางไฟล์ชื่อ 'core.pid.txt' พร้อมกับคำแนะนำในการใช้ coredumpctl เพื่อให้ได้ coredump ของคุณรวมถึงวิธีปิดการสร้าง.txtไฟล์จะเป็นความช่วยเหลือที่ดีแม้ว่าพวกเขาจะทิ้งขยะ ระบบไฟล์สำหรับชั่วขณะหนึ่ง

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