1
ไม่มีการปิดกั้นการถ่ายโอนข้อมูลหลักบน Linux?
ฉันกำลังมองหาวิธีที่จะใช้ coredump ที่ไม่ล่วงล้ำของกระบวนการทำงานบน Linux ฉันคุ้นเคยกับ gdb gcoreแต่สามารถทำงานได้เมื่อgdbเชื่อมต่อกับกระบวนการและหยุดการดีบักเท่านั้น สำหรับดัมพ์หลักขนาดใหญ่ที่อาจหมายถึงหลายวินาทีหรือแม้กระทั่งสองสามนาทีของการประมวลผลที่ถูกขัดจังหวะ มีทางเลือกที่ไม่มีการบล็อกหรือไม่? ลินุกซ์สนับสนุนคัดลอกเมื่อเขียนหน่วยความจำซึ่งมันต้องอาศัยการสนับสนุนโดยไม่ต้องfork() exec()ดังนั้นฉันจึงคิดถึงสิ่งที่ระดับเคอร์เนลซึ่งเคอร์เนลใช้สแนปช็อต copy-on-write ของตารางหน้ากระบวนการของกระบวนการที่ถูกเททิ้งแล้วเขียนแกนออกในขณะที่กระบวนการดั้งเดิมยังคงทำงานอยู่ ฉันค่อนข้างมั่นใจว่าฉันสามารถใช้gdbเพื่อบังคับเด็กfork()แล้วทิ้งในขณะที่ผู้ปกครองดำเนินการอย่างมีความสุขจากนั้นwait()ในผู้ปกครองเพื่อเก็บเกี่ยวเด็กหลังจากการเลิกจ้าง แม้ว่าจะยุ่งและยังคงต้องมีการขัดจังหวะสองขั้นตอนของกระบวนการหลักแม้ว่าจะเป็นกระบวนการสั้น แน่นอนว่ามีคนต้องการสิ่งนี้มาก่อนหรือไม่