ประสบการณ์การพัฒนาระดับ OS เพียงอย่างเดียวของฉันคือในโรงเรียนระดับประถมศึกษา แต่ฉันสงสัยว่าสิ่งที่เกิดขึ้นคือสิ่งนี้ (หรือบางสิ่งที่คล้ายกัน):
มีข้อผิดพลาดเกิดขึ้นขณะเรียกใช้อินสแตนซ์สุดท้ายที่ดีบักเกอร์พยายามจัดการ แต่ปัญหาอื่น ๆ ทำให้เกิดความล้มเหลว (อาจเป็นปัญหาการตรวจแก้จุดบกพร่อง แต่ก่อนที่คุณจะสามารถคลิกที่กล่องโต้ตอบเพื่อยกเลิก / ลองใหม่ / ละเว้นอีกครั้งได้ อาจเนื่องจากตัวชี้โมฆะ) ผลลัพธ์หลังจากที่คุณหยุดการดีบักก็คือตัวดีบั๊กยังคงรอการตอบกลับของคุณสำหรับการยืนยันการดีบักครั้งแรกดังนั้นมันจะไม่ทำให้กระบวนการยุติลง แต่จากนั้นตัวดีบักจะหยุดทำงานเมื่อคุณหยุดการดีบั๊ก (หรือทำแบบนั้น) เปลี่ยนกระบวนการให้กลายเป็นซอมบี้หรือต้นไม้กลายเป็นซอมบี้ เมื่อคุณพยายามที่จะฆ่ากระบวนการซอมบี้มีข้อผิดพลาดคล้ายกันนี้เกิดขึ้น แต่ตัวจัดการงานไม่ได้บอกคุณ:
C:\Windows\system32>taskkill /pid 9564 /f /t
ERROR: The process with PID 9564 (child process of PID 22520) could not be
terminated.
Reason: There is no running instance of the task.
หากคุณตัดสินใจที่จะลองสิ่งเดียวกันกับผู้ปกครอง (ในกรณีของฉันที่ผู้ปกครองเป็นกระบวนการดีบักเกอร์ msvsmon.exe) ก็ล้มเหลวในลักษณะเดียวกัน:
C:\Windows\system32>taskkill /pid 22520 /f /t
ERROR: The process with PID 9564 (child process of PID 22520) could not be
terminated.
Reason: There is no running instance of the task.
ERROR: The process with PID 22520 (child process of PID 13964) could not be
terminated.
Reason: There is no running instance of the task.
ผู้ปกครองเริ่มต้นโดย IDE แต่ IDE ตัดสายสะดือดังนั้นตอนนี้คุณมีกระบวนการซอมบี้สองกระบวนการ คุณไม่สามารถแนบตัวดีบักเกอร์กับกระบวนการที่คุณกำลังดีบักได้เนื่องจากมีตัวดีบักเกอร์ (zombie) อยู่แล้วและคุณไม่สามารถแนบตัวดีบักกับ debugger (zombie) ได้เนื่องจากเนื่องจาก Visual Studio จะบอกคุณเมื่อคุณลอง :
ไม่สามารถแนบกับกระบวนการ การดำเนินการไม่ถูกกฎหมายในสถานะปัจจุบัน
ซอมบี้ยังอยู่ในตารางกระบวนการอย่างเพียงพอเพื่อป้องกันไม่ให้คุณเรียกใช้อินสแตนซ์อื่นผ่านตัวดีบั๊ก แต่คุณสามารถเริ่มต้นอินสแตนซ์อื่นนอก IDE ได้
สิ่งนี้ระบุถึงปัญหาที่เฉพาะเจาะจงมากขึ้นในการมี VS สร้างกระบวนการซอมบี้ แต่กระบวนการซอมบี้มักจะไม่ตาย บ่อยครั้งบน Windows บางครั้งบน Linux ไม่ใช่จนกว่าคุณจะยิงด้วยปืนลูกซอง หรือว่าเป็นการปิดระบบ? แต่ระวังแอปพลิเคชันโดยไม่ตั้งใจของการอัปเดต Windows ที่ค้างอยู่
ฉันรู้สึกตื่นเต้นกับคำตอบก่อนหน้านี้บางข้อที่เสนอแนะให้แนบกับดีบักเกอร์ แต่ข้างบนคือผลลัพธ์ที่ฉันได้รับ ดังนั้นฉันจึงส่งคำตอบและเริ่มระบบใหม่เพื่อล้างตารางกระบวนการ