ฉันจะ 'แนบ' คอนโซล / มุมมองเทอร์มินัลเข้ากับเอาต์พุตของแอปพลิเคชันได้อย่างไรเพื่อที่ฉันจะได้เห็นว่ามันกำลังพูดอะไร
เกี่ยวกับคำถามนี้ฉันรู้ว่าเป็นไปได้ที่จะจับเอาท์พุทแม้ว่าคุณจะไม่ได้เปิดคำสั่ง sceen ก่อนที่จะเปิดใช้งาน processus
แม้ว่าฉันจะไม่เคยลอง แต่ฉันก็พบบทความที่น่าสนใจซึ่งอธิบายวิธีการใช้ GDB (และไม่ต้องรีสตาร์ทกระบวนการของคุณ)
การเปลี่ยนเส้นทางเอาต์พุตจากกระบวนการรัน
โดยทั่วไป:
- ตรวจสอบรายการไฟล์ที่เปิดอยู่สำหรับกระบวนการของคุณขอบคุณ/ proc / xxx / fd
- แนบกระบวนการของคุณกับ GDB
- ในขณะที่หยุดชั่วคราวให้ปิดไฟล์ที่คุณสนใจโดยเรียกใช้ฟังก์ชันclose () (คุณสามารถทำงานใด ๆ ของกระบวนการของคุณใน GDB ฉันสงสัยว่าคุณต้องการสัญลักษณ์ดีบักในกระบวนการของคุณ .. )
- เปิดไฟล์ใหม่ที่เรียกใช้ฟังก์ชันcreate ()หรือ open () (ดูความคิดเห็นในตอนท้ายคุณจะเห็นคนแนะนำให้ใช้dup2 ()เพื่อให้แน่ใจว่าจะใช้หมายเลขอ้างอิงเดียวกัน)
- ถอดกระบวนการและปล่อยให้ทำงาน
โดยวิธีการที่ถ้าคุณใช้ระบบปฏิบัติการลินุกซ์บน i386 กล่องความเห็นมีการพูดคุยเกี่ยวกับเครื่องมือที่ดีกว่าที่จะส่งออกเปลี่ยนเส้นทางไปยังคอนโซลใหม่: 'Retty' ถ้าเป็นเช่นนั้นให้พิจารณาการใช้งาน