Ketika aplikasi lumpuh di Windows dan debugger seperti Visual Studio diinstal, dialog modal berikut muncul:
[Judul: Microsoft Windows]
X berhenti bekerja
Masalah menyebabkan program berhenti bekerja dengan semestinya. Windows akan menutup program dan memberi tahu Anda jika solusi tersedia.
[Debug] [Tutup Aplikasi]
Apakah ada cara untuk menonaktifkan dialog ini? Artinya, apakah program hanya crash dan burn secara diam-diam?
Skenario saya adalah saya ingin menjalankan beberapa tes otomatis, beberapa di antaranya akan macet karena bug dalam aplikasi yang sedang diuji. Saya tidak ingin dialog ini menghentikan proses otomatisasi.
Mencari-cari di sekitar saya pikir saya telah menemukan solusi untuk menonaktifkan ini di Windows XP, yang menukarkan kunci reg ini:
HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ Debugger
Namun, itu tidak berhasil pada Windows Vista.
Jawaban:
Untuk memaksa Windows Error Reporting (WER) mengambil crash dump dan menutup aplikasi, alih-alih meminta Anda untuk men-debug program, Anda dapat menyetel entri registri ini:
Setelah ini disetel, saat aplikasi Anda mogok, Anda akan melihat file * .hdmp dan * .mdmp di:
sumber
Lihat disini:
http://msdn.microsoft.com/en-us/library/bb513638.aspx
regedit
DWORD HKLM atau HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ DontShowUI = "1"
akan membuat WER melaporkan secara diam-diam. Kemudian Anda dapat mengatur
DWORD HKLM atau HKCU \ Software \ Microsoft \ Windows \ Windows Error Reporting \ Disabled = "1"
untuk menghentikannya berbicara dengan MS.
sumber
Saya tidak yakin apakah ini merujuk pada dialog yang persis sama tetapi berikut adalah pendekatan alternatif dari Raymond Chen :
sumber
Saya harus menonaktifkan ini untuk otomatisasi rilis bekerja pada Windows 64-bit untuk Firefox dan saya melakukan hal berikut:
Hal serupa dicapai untuk pelaporan Pengalaman Pelanggan di: http://www.blogsdna.com/2137/fix-windows-installer-explorer-update-has-stopped-working-in-windows-7.htm
sumber
Dalam konteks saya, saya hanya ingin menyembunyikan munculan untuk pengujian unit saya dan bukan untuk seluruh sistem. Saya telah menemukan bahwa kombinasi fungsi diperlukan untuk menekan kesalahan ini, seperti menangkap pengecualian yang tidak tertangani, menekan pemeriksaan waktu proses (seperti validitas penunjuk tumpukan) dan bendera mode kesalahan. Inilah yang saya gunakan dengan beberapa keberhasilan:
sumber
Dalam aplikasi WPF
sumber
Anda harus menerapkan filter pengecualian tidak tertangani yang langsung menutup aplikasi Anda, lalu menyetel fungsi filter itu dengan SetUnhandledExceptionFilter () .
Jika Anda menggunakan CRT aman, Anda juga harus menyediakan penangan parameter tidak valid Anda sendiri dan menyetelnya dengan _set_invalid_parameter_handler ().
Entri blog ini juga memiliki beberapa informasi: http://blog.kalmbachnet.de/?postid=75
sumber
Selama pengujian, Anda dapat menjalankan 'debugger' seperti ADPlus yang terpasang yang dapat dikonfigurasi dengan berbagai cara berguna untuk mengumpulkan data (minidump) pada kesalahan, namun mencegah masalah dialog modal yang Anda sebutkan di atas.
Jika Anda ingin mendapatkan beberapa informasi berguna saat aplikasi Anda mogok dalam produksi, Anda dapat mengonfigurasi pelaporan Kesalahan Microsoft untuk mendapatkan sesuatu yang mirip dengan data ADPlus.
sumber
Ini bukan jawaban langsung untuk pertanyaan karena ini adalah solusi dan pertanyaannya adalah tentang cara menonaktifkan fitur itu, tetapi dalam kasus saya, saya adalah pengguna di server dengan izin terbatas dan tidak dapat menonaktifkan fitur menggunakan salah satu dari jawaban lainnya. Jadi, saya membutuhkan solusi. Ini kemungkinan besar akan berhasil setidaknya untuk beberapa orang lain yang berakhir dengan pertanyaan ini.
Saya menggunakan autohotkey portabel dan membuat makro yang memeriksa sekali dalam satu menit untuk melihat apakah kotak popup ada, dan jika ya, klik tombol untuk menutup program. Dalam kasus saya, itu sudah cukup, dan membiarkan fitur tersebut aktif untuk pengguna lain. Ini mengharuskan saya memulai skrip saat menjalankan program berisiko, tetapi berfungsi untuk kebutuhan saya.
Scriptnya adalah sebagai berikut:
edit: Bendera cepat. Ketika ada hal-hal lain, ini sepertinya mencoba untuk mengaktifkan kontrol di jendela latar depan - ini seharusnya mengirimkannya ke program di latar belakang. Jika saya menemukan perbaikan, saya akan mengedit jawaban ini untuk merefleksikannya, tetapi untuk saat ini, berhati-hatilah saat menggunakan ini dan mencoba melakukan pekerjaan lain pada mesin pada saat yang sama.
sumber
Setelah mencoba segala sesuatu di internet untuk menyingkirkan debugger hanya dalam waktu, saya menemukan cara sederhana yang benar-benar berfungsi dan saya harap akan membantu orang lain.
Pergi ke Control Panel Pergi ke Administrative Tools Pergi ke Services Lihat ke bawah daftar Machine Debug Manager Klik kanan padanya dan klik Properties Di bawah Tab Umum, cari Start Up Type Klik Disable. Klik Apply dan OK.
Saya belum melihat pesan debugger sejak itu, dan komputer saya berjalan dengan sempurna.
sumber
Alih-alih mengubah nilai di registri, Anda dapat menonaktifkan pelaporan kesalahan di Windows Server 2008 R2, Windows Server 2012, dan Windows 8 dengan:
serverWerOptin /disable
https://technet.microsoft.com/en-us/library/hh875648(v=ws.11).aspx
sumber