Menggunakan WER
Dimulai dengan Windows Vista, Windows menyediakan pelaporan kesalahan crash, non-respons, dan kesalahan kernel secara default tanpa memerlukan perubahan pada aplikasi Anda. Laporan ini akan mencakup informasi minidump dan heap dump jika diperlukan. Aplikasi sebagai gantinya menggunakan WER API untuk mengirim laporan masalah khusus aplikasi ke Microsoft.
Karena Windows secara otomatis melaporkan pengecualian yang tidak tertangani, aplikasi tidak boleh menangani pengecualian fatal. Jika proses yang salah atau tidak merespons bersifat interaktif, WER menampilkan antarmuka pengguna yang memberi tahu pengguna tentang masalah tersebut. Aplikasi dianggap tidak responsif jika tidak merespons pesan Windows selama lima detik saat pengguna mencoba berinteraksi dengan aplikasi.
Berikut ini menunjukkan langkah-langkah yang terjadi untuk crash aplikasi, non-respons, atau kesalahan kernel.
- Peristiwa masalah terjadi.
- Sistem operasi memanggil WER.
- WER mengumpulkan data, membuat laporan, dan meminta persetujuan kepada pengguna (jika diperlukan).
- WER mengirimkan laporan ke Microsoft (Watson Server) jika pengguna menyetujuinya.
- Jika server Watson meminta data tambahan, WER mengumpulkan data dan meminta persetujuan kepada pengguna (jika diperlukan).
- Jika aplikasi telah mendaftar untuk pemulihan dan memulai ulang, WER menjalankan fungsi panggilan balik terdaftar saat data dikompresi dan dikirim ke Microsoft (jika pengguna menyetujui).
- Jika respons terhadap masalah tersedia dari Microsoft, pengguna akan diberi tahu.
Aplikasi dapat menggunakan fungsi berikut untuk menyesuaikan konten laporan yang dikirim ke Microsoft. Fungsi pendaftaran memberi tahu WER untuk menyertakan file dan blok memori tertentu dalam laporan kesalahan yang dibuatnya.
- WerRegisterFile
- WerRegisterMemoryBlock
- WerSetFlags
- WerUnregisterFile
- WerUnregisterMemoryBlock
- WerGetFlags
Langkah-langkah berikut menunjukkan bagaimana aplikasi bisa mendapatkan laporan kesalahan untuk kondisi kesalahan yang tidak fatal.
- Peristiwa masalah non-fatal terjadi.
- Aplikasi mengenali peristiwa dan menggunakan urutan panggilan fungsi berikut untuk menghasilkan laporan.
- Panggil fungsi WerReportCreate untuk membuat laporan.
- Panggil fungsi WerReportSetParameter untuk mengatur parameter laporan.
- Panggil fungsi WerReportAddFile untuk menambahkan file ke laporan.
- Panggil fungsi WerReportAddDump untuk menambahkan minidump ke laporan (jika diperlukan).
- Panggil fungsi WerReportSubmit untuk mengirim laporan.
- Panggil WerReportCloseHandle ke sumber daya gratis.
- Bergantung pada opsi tertentu yang digunakan saat memanggil fungsi di langkah 2, WER akan menyelesaikan pelaporan kesalahan. WER akan memastikan bahwa pelaporan dilakukan sesuai dengan kebijakan yang ditetapkan oleh pengguna. Misalnya, WER akan mengirim laporan ke Microsoft, mengantrekan laporan, dan menampilkan antarmuka pengguna yang sesuai kepada pengguna.
Untuk mengecualikan aplikasi Anda dari pelaporan kesalahan Windows, gunakan fungsi WerAddExcludedApplication . Untuk memulihkan pelaporan kesalahan untuk aplikasi Anda, gunakan fungsi WerRemoveExcludedApplication .
Aplikasi dapat menggunakan Pemulihan Aplikasi dan Mulai Ulang untuk menyimpan data dan informasi status sebelum aplikasi keluar karena pengecualian yang tidak tertangani atau ketika aplikasi berhenti merespons. Aplikasi juga dimulai ulang, jika diminta. Untuk detailnya, lihat Pemulihan Aplikasi dan Mulai Ulang.
Aplikasi dapat melaporkan kesalahan dengan memanggil fungsi ReportFault . Namun, Anda tidak boleh menggunakan fungsi ReportFault kecuali Anda memiliki persyaratan yang sangat spesifik bahwa perilaku pelaporan kesalahan default sistem operasi tidak dapat dipenuhi.
Jika pelaporan kesalahan diaktifkan, sistem menampilkan kotak dialog kepada pengguna yang menunjukkan bahwa aplikasi mengalami masalah dan akan ditutup. Jika ada debugger yang dikonfigurasi di kunci HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug , pengguna diberi opsi untuk meluncurkan debugger. Pengguna juga diberi opsi untuk mengirim laporan ke Microsoft. Jika pengguna mengirim laporan, sistem menampilkan kotak dialog lain yang berterima kasih kepada pengguna atas laporan dan memberikan tautan ke informasi lebih lanjut.
Sistem pelaporan kesalahan mendukung mode operasi berikut.
Mode operasi | Deskripsi |
---|---|
Pelaporan memori bersama | Jika konteks keamanan aplikasi sama dengan konteks keamanan pengguna yang masuk, sistem pelaporan kesalahan menggunakan blok memori bersama untuk komunikasi. Mode ini tidak dapat digunakan dengan mode pelaporan manifes. |
Pelaporan manifes | Jika konteks keamanan aplikasi tidak sama dengan konteks keamanan pengguna yang masuk, sistem pelaporan kesalahan menggunakan file untuk komunikasi. Mode ini juga digunakan untuk melaporkan aplikasi yang tidak responsif dan kesalahan kernel. Mode ini tidak dapat digunakan dengan mode pelaporan memori berbagi. |
Pelaporan internet | Sistem pelaporan kesalahan mengirimkan semua data ke Microsoft melalui Internet. Ini adalah mode operasi default. Ini tidak dapat digunakan dengan mode pelaporan perusahaan. Mode ini digunakan ketika tidak ada jalur unggahan perusahaan yang ditentukan oleh administrator. |
Pelaporan perusahaan | Sistem pelaporan kesalahan mengirim semua data ke berbagi file alih-alih mengunggahnya langsung ke Microsoft. Ini memungkinkan manajer TI perusahaan untuk meninjau data sebelum dikirim ke Microsoft. Mode ini digunakan ketika ada jalur unggahan perusahaan yang ditentukan oleh administrator. Ini tidak dapat digunakan dengan mode pelaporan Internet. |
Pelaporan tanpa kepala | Sistem pelaporan kesalahan tidak akan menampilkan kotak dialog apa pun kepada pengguna. Ini memungkinkan manajer TI perusahaan untuk mengumpulkan laporan kesalahan dari karyawan mereka setiap saat. Mode ini digunakan saat pelaporan diaktifkan oleh administrator, tetapi pemberitahuan dinonaktifkan. Ini hanya dapat digunakan dengan mode pelaporan perusahaan. |
Untuk mengecualikan aplikasi Anda dari pelaporan kesalahan, gunakan fungsi AddERExcludedApplication .