ฉันพยายามอ่านสแต็กของกระบวนการลูก แต่ไม่มีโชค ฉันรู้ว่ามันเป็นไปได้ที่จะใช้ptrace
แต่ptrace
อินเทอร์เฟซของอนุญาตให้คุณอ่านเพียงหนึ่งคำในแต่ละครั้งและฉันพยายามสแกนส่วนที่ใหญ่กว่าของสแต็ก
ฉันได้ลองอ่าน/proc/$pid/mem
จากขอบเขตของสแต็คที่แยกออกมาจาก/proc/$pid/maps
ไฟล์หลังจากใช้ ptrace เพื่อเชื่อมต่อกับมันเป็นครั้งแรก (ตามที่แนะนำไว้ที่นี่ ) แต่การอ่านทำให้ล้มเหลว (แม้ในขณะทำงานในฐานะรูท) อ่านจากส่วนต่าง ๆ ของกระบวนการ (เช่นกอง)
ผมทำอะไรผิดหรือเปล่า? มีตัวเลือกอื่น ๆ อีกไหม?
waitpid
ระหว่างptrace(PTRACE_ATTACH,…)
และread
(มิฉะนั้นจะมีเงื่อนไขการแข่งขันที่เป็นไปได้)? เกิดข้อผิดพลาดread
อะไรขึ้น เด็ก ๆ ทำอะไรแปลก ๆ ด้วยการแม็ปหน่วยความจำ - คุณลองใช้โค้ดกับเด็กง่าย ๆ ได้sleep
ไหม?