Rumah > pembangunan bahagian belakang > C++ > Mengapa mesej pengecualian hilang dalam aplikasi Windows WinForms 64-bit menggunakan VS2010?

Mengapa mesej pengecualian hilang dalam aplikasi Windows WinForms 64-bit menggunakan VS2010?

Susan Sarandon
Lepaskan: 2025-02-01 22:06:11
asal
185 orang telah melayarinya

Why are Exception Messages Missing in 64-bit Windows WinForms Applications using VS2010?

vs2010 64 -bit windows di bawah aplikasi WinForms kehilangan gangguan: dalam analisis dan penyelesaian masalah

Apabila menggunakan Visual Studio 2010 untuk membuat aplikasi Windows Forms baru pada sistem Windows 64 -bit, ia mungkin menghadapi masalah yang belum dipaparkan dan tidak bersedia. Apabila kod tidak diproses dalam kod dalam program pemprosesan acara beban, program akan melangkau garis kod masalah dan terus berjalan tanpa sebarang kesilapan. Ini berbeza daripada tingkah laku gangguan debugger yang diharapkan dan paparan luar biasa maklumat yang tidak disengajakan.

analisis punca akar

Tingkah laku yang tidak normal ini berasal dari lapisan simulasi WOW64 (Windows-on-Windows 64-bit) untuk berinteraksi dengan kod 32-bit yang berjalan pada sistem 64-bit. Apabila pengurus tetingkap 64 -bit mencetuskan pemberitahuan, kod tindak balas (seperti program pemprosesan acara beban) dilaksanakan dalam persekitaran 32 -bit. Sekiranya keabnormalan berlaku dalam kod 32 -bit ini, lapisan WOW64 mungkin menelan kelainan dan menghalang debugger daripada mengesannya.

kaedah penyelesaian dan perubahan

Tetapkan sasaran platform sebagai anycpu dan membatalkan yang dipilih "lebih suka 32 -bit":

  1. navigasi ke projek & gt; Tetapkan sasaran platform ke AnyCPU.

      Batalkan "pilihan pertama 32 -bit".
    • Ini mengendalikan aplikasi wajib sebagai proses 64 -bit, dengan itu menghapuskan masalah penindasan wow64 yang tidak normal.
    • debugger mandatori terganggu dalam keabnormalan:
  2. Putar ke debug & gt;

    Pilih kotak semak CLR Abnormal "Disebabkan".

    Ini akan menggantung pelaksanaan debugger mandatori dalam mana -mana garis tidak normal CLR, tanpa mengira lokasinya dalam program pemprosesan acara beban.
    • Tambahkan rawatan anomali ke proses pemprosesan acara beban:
  3. mengepung kod masalah dalam pemprosesan acara beban menggunakan blok percubaan.
  4. Gunakan Failfast untuk memaparkan mesej ralat di blok tangkapan dan tiba -tiba menamatkan permohonan.

    • Lumpuhkan wow64 penangkapan abnormal semasa debugging:
  5. tambah kaedah utama ():
    • Ini akan dilumpuhkan penangkapan abnormal yang dilumpuhkan dalam kitaran mesej semasa debugging.

      • Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
      Pertimbangkan untuk mengelakkan penggunaan prosedur pemprosesan peristiwa beban:
    • re -menilai sama ada kod anda benar -benar perlu diletakkan dalam program pemprosesan acara beban.
    Biasanya, tugas inisialisasi yang tidak bergantung kepada keutamaan pengguna atau saiz tetingkap hendaklah diproses dalam pembina.
  6. Keterangan tambahan:

    • Dalam Windows 8 dan versi yang lebih tinggi, masalah ini telah diselesaikan. Oleh itu, pengemaskinian kepada sistem operasi yang lebih baru juga boleh menyediakan penyelesaian.

Atas ialah kandungan terperinci Mengapa mesej pengecualian hilang dalam aplikasi Windows WinForms 64-bit menggunakan VS2010?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan