Satu-satunya pengalaman pengembangan tingkat OS saya adalah di sekolah pascasarjana, tetapi saya menduga apa yang terjadi adalah ini (atau yang serupa):
Terjadi kesalahan saat menjalankan contoh terakhir yang mencoba ditangani oleh debugger, tetapi beberapa masalah lain menyebabkannya gagal (mungkin pernyataan debug ditemukan, tetapi sebelum Anda dapat mengklik dialog untuk Abort / Retry / Abaikan, jeda lain dipicu , mungkin karena pointer nol). Hasilnya, setelah Anda berhenti debug, adalah bahwa debugger masih menunggu respons Anda terhadap pernyataan debug pertama, sehingga tidak akan membiarkan proses berakhir. Tetapi kemudian debugger dihentikan ketika Anda berhenti debugging (atau melakukannya?), Mengubah proses menjadi zombie, atau pohonnya menjadi zombie. Ketika Anda mencoba untuk membunuh proses zombie, kesalahan yang mirip dengan ini terjadi, tetapi manajer tugas tidak memberi tahu Anda tentang hal itu:
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.
Jika Anda memutuskan untuk mencoba hal yang sama pada orang tua (dalam kasus saya orang tua adalah proses debugger, msvsmon.exe), gagal dengan cara yang sama:
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.
Induknya dimulai oleh IDE, tetapi IDE memotong tali pusar, jadi sekarang Anda memiliki dua proses zombie. Anda tidak dapat melampirkan debugger ke proses yang Anda debug, karena sudah ada debugger (zombie) terlampir, dan Anda tidak bisa melampirkan debugger ke debugger (zombie) karena, seperti yang akan dijelaskan oleh Visual Studio ketika Anda mencoba :
Tidak dapat melampirkan ke proses. Suatu operasi tidak sah dalam keadaan saat ini.
Zombi masih dalam tabel proses cukup baik untuk mencegah Anda menjalankan instance lain melalui debugger, tetapi Anda mungkin bisa memulai instance lain di luar IDE dengan baik.
Ini membahas masalah yang lebih spesifik dari memiliki VS membuat proses zombie. Tapi, proses zombie sering tidak mati. Yah, sering di Windows, kadang di Linux, tidak sampai Anda menembak mereka dengan senapan. Atau itu shutdown? Namun waspadalah terhadap aplikasi Windows yang tertunda tanpa disengaja.
Saya merasa senang dengan beberapa jawaban sebelumnya yang menyarankan melampirkan dengan debugger, tetapi di atas adalah hasil yang saya dapatkan. Jadi saya mengirimkan jawaban dan me-reboot untuk membersihkan tabel proses.