Aku punya DLL dengan COM benda. Kadang-kadang, benda-benda ini lumpuh dan daftarkan peristiwa galat di Windows Event Log dengan banyak heksadesimal informasi. Saya tidak tahu mengapa ini terjadi crash.
Jadi, Bagaimana saya bisa melacak orang-orang COM objek pengecualian?
Langkah pertama adalah untuk pencarian Gagal kode's nilai hex (E. G. E_FAIL 0x80004005). I've telah benar-benar keberuntungan dengan postingan yang nilai di Google untuk mendapatkan rasa dari apa kode kesalahan berarti.
Maka, saya hanya menggunakan trial and error untuk mencoba untuk mengisolasi lokasi di kode yang's gagal, dan akar penyebab dari kegagalan.
Jika anda hanya ingin benar-benar cepat cara untuk mengetahui apa yang berarti kode kesalahan, anda bisa gunakan "Kesalahan Lookup" alat dikemas dengan Visual Studio (rincian di sini). Memasukkan nilai hex, dan itu akan memberikan string yang menjelaskan bahwa kesalahan kode.
Tentu saja, setelah anda tahu bahwa, anda've masih harus mencari tahu mengapa hal itu's terjadi.
Cara yang baik untuk mencari kesalahan (hresult) kode HResult Plus atau welt.exe (Windows Error Lookup Tool).
Saya menggunakan penebangan secara internal dalam COM-kelas untuk melihat apa yang terjadi. Juga, setelah COM-kelas dimuat oleh dieksekusi, anda dapat melampirkan VS debugger untuk itu dan men-debug COM kode dengan breakpoints, jam tangan, dan semua hal-hal yang menyenangkan.
COM benda don't melempar pengecualian. Mereka kembali HRESULTs, yang sebagian besar menunjukkan kegagalan. Jadi jika anda'kembali mencari setara dengan pengecualian stack trace, anda're beruntung. Anda'kembali akan harus berjalan melalui kode dengan tangan dan mencari tahu apa yang's terjadi.