سؤال

بمعرفة رمز الاستثناء، هل هناك طريقة لمعرفة المزيد حول معنى الاستثناء الفعلي الذي تم طرحه؟

الاستثناء الخاص بي في السؤال:0x64487347

عنوان الاستثناء:0x1

مكدس الاستدعاءات لا يظهر أي معلومات.

أنا أقوم بمراجعة ملف .dmp الخاص بالعطل ولا أقوم بتصحيح الأخطاء فعليًا في Visual Studio.

هل كانت مفيدة؟

المحلول

نظرًا لأنك تقوم بمراجعة ملف تفريغ الأعطال، سأفترض أنه جاء من أحد العملاء ولا يمكنك إعادة إنتاج الخطأ بسهولة باستخدام المزيد من الأجهزة.

ليس لدي الكثير من المساعدة لأقدمها باستثناء ملاحظة أن رمز الاستثناء 0x64487347 هو ASCII "dShG"، وغالبًا ما يستخدم المطورون الأحرف الأولى من الشرط الروتيني أو الخطأ عند تكوين أرقام سحرية مثل هذه.

أدى القليل من البحث على Google إلى ظهور نتيجة واحدة لـ dHsg في السياق المناسب، وهو اسم وظيفة في بحث كتاب Google عن "استخدام Visual C++ 6" بقلم كيت جريجوري.ولسوء الحظ أن هذا وحده لم يكن مفيدا.

نصائح أخرى

سيكون استثناء C++ الحقيقي الذي تم طرحه من وقت تشغيل Microsoft رمز SEH هو 0xe06d7363 (E0 + 'msc').لديك بعض الاستثناءات الأخرى.

يقوم .NET بإنشاء استثناءات SEH بالرمز 0xe0434f4d (E0 + 'COM').

يتم توثيق رموز حالة NT في ntstatus.h، وتبدأ عمومًا بـ 0x80 (تحذيرات) أو 0xC0 (أخطاء).الأكثر شهرة هو 0xC0000005، STATUS_ACCESS_VIOLATION.

إذا كنت تعرف الكتلة التي أطلقت الاستثناء، فهل يمكنك وضع معالجات أكثر تحديدًا في كتلة الالتقاط لمحاولة عزلها بهذه الطريقة؟

هل ترمي استثناءً قمت بطرحه بنفسك؟

يحرر:لقد نسيت أن أشير إليك هذا المقال على استثناءات Visual C++ التي وجدتها مفيدة جدًا.

روب

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top