سؤال

انا املك DLL مع بعض كائنات كوم.في بعض الأحيان، يعترض هذا تعطل وقم بتسجيل حدث خطأ في سجل أحداث Windows مع الكثير من المعلومات السداسية العشرية.ليس لدي أدنى فكرة عن سبب حدوث هذا الانهيار.

إذًا، كيف يمكنني تتبع استثناءات كائنات COM تلك؟

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

المحلول

الخطوة الأولى هي البحث عن القيمة السداسية لرمز الفشل (على سبيل المثال.E_FAIL 0x80004005).لقد حالفني الحظ حقًا في نشر هذه القيمة في Google للتعرف على ما يعنيه رمز الخطأ.

بعد ذلك، أستخدم فقط التجربة والخطأ لمحاولة عزل الموقع الفاشل في الكود، والسبب الجذري للفشل.

نصائح أخرى

إذا كنت تريد طريقة سريعة لمعرفة ما يعنيه رمز الخطأ، فيمكنك استخدام أداة "البحث عن الأخطاء" المضمنة في Visual Studio (التفاصيل هنا).أدخل القيمة السداسية، وسوف تعطيك السلسلة التي تصف رمز الخطأ هذا.

وبطبيعة الحال، بمجرد أن تعرف ذلك، لا يزال يتعين عليك معرفة سبب حدوث ذلك.

هناك طريقة جيدة للبحث عن رموز الخطأ (hresult) وهي HResult Plus أو welt.exe (أداة البحث عن الأخطاء في Windows).

أستخدم التسجيل داخليًا في فئات COM لمعرفة ما يحدث.أيضًا، بمجرد تحميل فئة COM بواسطة الملف القابل للتنفيذ، يمكنك إرفاق مصحح أخطاء VS به وتصحيح كود COM باستخدام نقاط التوقف والساعات وكل تلك الأشياء الممتعة.

كائنات COM لا تطرح استثناءات.يقومون بإرجاع HRESULTs، معظمها يشير إلى فشل.لذلك، إذا كنت تبحث عن ما يعادل تتبع مكدس الاستثناء، فلن يحالفك الحظ.سيتعين عليك الاطلاع على الكود يدويًا ومعرفة ما يحدث.

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