Moje jedyne doświadczenie w programowaniu na poziomie systemu operacyjnego było w szkole, ale podejrzewam, że dzieje się to (lub coś podobnego):
Wystąpił błąd podczas uruchamiania ostatniej instancji, którą debuger próbował obsłużyć, ale jakiś inny problem spowodował, że to się nie powiodło (być może napotkano potwierdzenie debugowania, ale zanim można było kliknąć okno dialogowe Abort / Retry / Ignore, uruchomiono kolejną przerwę , może z powodu pustego wskaźnika). W wyniku tego, po zatrzymaniu debugowania, debuger nadal czekał na twoją odpowiedź na pierwsze stwierdzenie debugowania, więc proces nie został zakończony. Ale potem debuger zakończył się, gdy przestałeś debugować (czy zrobiłeś to?), Zamieniając proces w zombie lub jego drzewo w zombie. Podczas próby zabicia procesu zombie wystąpił błąd podobny do tego, ale menedżer zadań nie powiedział o tym:
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.
Jeśli zdecydujesz się wypróbować to samo na obiekcie nadrzędnym (w moim przypadku rodzicem był proces debugowania, msvsmon.exe), nie powiedzie się to w ten sam sposób:
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.
Rodzic został założony przez IDE, ale IDE przecięło pępowinę, więc teraz masz dwa procesy zombie. Nie możesz dołączyć debugera do procesu, który debugowałeś, ponieważ jest już podłączony debugger (zombie) i nie możesz dołączyć debugera do debugera (zombie), ponieważ, jak Visual Studio powie ci, kiedy spróbujesz :
Nie można dołączyć do procesu. W obecnym stanie operacja nie jest legalna.
Zombie nadal znajdują się w tabeli procesów wystarczająco dobrze, aby uniemożliwić uruchomienie innej instancji za pośrednictwem debugera, ale prawdopodobnie można uruchomić inną instancję poza środowiskiem IDE.
Rozwiązuje to bardziej konkretny problem polegający na tym, że VS tworzy proces zombie. Ale procesy zombie często nie umierają. Cóż, często na Windowsie, czasem na Linuksie, dopóki nie zastrzelisz ich strzelbą. Czy to było zamknięcie? Ale uważaj na przypadkową aplikację oczekujących aktualizacji systemu Windows.
Byłem podekscytowany niektórymi wcześniejszymi odpowiedziami, które sugerowały dołączenie się do debuggera, ale powyższy wynik jest wynikiem. Przesyłam więc swoją odpowiedź i uruchamiam ponownie, aby wyczyścić tabelę procesów.