Saat ini saya sedang mencoba untuk Menjalankan / Debug aplikasi saya di Visual Studio, tetapi tidak dapat membuatnya karena contoh terakhir dari app.vshost.exe
masih berjalan. Kemudian, dengan menggunakan Task Manager saya mencoba untuk membunuhnya, tetapi tetap saja tidak ada sinyal aktivitas.
Di luar kasus khusus itu (mungkin bug Visual Studio), saya sangat ingin tahu tentang alasan teknis mengapa terkadang Windows tidak dapat mematikan proses?
Bisakah, pengembang terkait OS yang tercerahkan, silakan coba jelaskan?
(Dan tolong jangan memulai pertempuran Unix / Linux / Mac melawan Windows.)
windows
process
visual-studio
kill
Néstor Sánchez A.
sumber
sumber
Jawaban:
Penyebabnya biasanya beberapa driver tidak responsif yang memiliki permintaan I / O yang belum selesai dalam proses.
Lihat entri blog Mark Russinovich's Unkillable Processes ( arsip )
sumber
Satu alasan yang memungkinkan: Anda tidak dapat membunuh tugas yang dilampirkan ke debugger.
Satu-satunya cara untuk menghentikan tugas adalah dari debugger itu sendiri.
sumber
taskkill /f
, tidak denganwmic ... call terminate
... terus mengatakan "kesalahan: proses X dengan pid Y tidak dapat dihentikan Msgstr "Tidak ada instance berjalan dari tugas ini."Salah satu alasannya adalah Anda tidak memiliki izin untuk membunuhnya. Misal jika proses berjalan sebagai administrator dan Anda adalah pengguna normal.
sumber
Buka halaman Properties untuk proyek, buka tab Debug , dan centang "Aktifkan debugging kode yang tidak dikelola". Atau, hapus centang opsi untuk menggunakan proses host.
sumber
Jika app.vshost.exe terakhir masih berjalan, cukup sambungkan ke proses itu dengan debugger.
Seharusnya ditemukan di menu di bawah Debug-> AttachToProcess kemudian pilih proses gantung dan hubungkan ke sana.
sumber
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:
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:
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 :
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.
sumber
Mungkin pemeriksaan terhadap beberapa alat yang dikutip di sini dapat menghasilkan jawaban?
https://stackoverflow.com/questions/49988/really-killing-a-process-in-windows
(Baru saja saya menemukan bahwa pskill adalah satu-satunya dari beberapa alat yang dapat membunuh proses yang berjalan di bawah sesi Windows 7 satu pengguna, dari sesi pengguna lain (atau kredensial, saya kira.)
sumber
Kamu bisa!
Menggunakan ProcessHacker (klik kanan pada proses) -> Terminator.
sumber
Jika Anda menggunakan VS untuk proses debug, dan Anda membunuhnya dengan task manager. Kemudian VS tidak bisa mengatasinya dengan baik.
Jadi VS masih men-debug proses target tetapi Anda tidak bisa hanya menekan proses berhenti di VS. Hanya keluar dari VS Anda dan Anda akan melihat proses Anda keluar.
sumber