سؤال

لقد كتبت مكونًا إضافيًا صغيرًا لـ NPAPI باستخدام مثال Mozilla Npruntime القديم كقاعدة. مشكلتي هي أنه يعمل بشكل جيد على Firefox و Safari (على Windows) ، لكنه فشل في العمل مع Google Chrome.

أستطيع أن أرى المكون الإضافي في: الإضافات على ما يرام ، وأرى Chrome يقوم بتشغيل عملية جديدة لتشغيل المكون الإضافي عندما أفتح صفحة الاختبار الخاصة بي ، تموت عملية البرنامج المساعد في حوالي 10 ثوانٍ دون أي حوار خطأ. خلال العشر ثوانٍ ، لا تعمل العملية على قيد الحياة في الوصول إلى كائن البرنامج المساعد القابل للنص (والذي يعمل بشكل جيد عند استخدام Firefox أو Safari).

أي أفكار ما يمكن أن يسبب قتل الكروم عملية البرنامج المساعد بعد 10 ثوان؟ يجب أن يكون شيئًا مرتبطًا بالتهيئة ، لأنه يقتله حتى لو لم يصل إلى المكون الإضافي بأي شكل من الأشكال.

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

المحلول

من الصعب أن نقول على وجه اليقين ، ولكن يمكنك استخدام معلمة سطر أوامر plugin-startup-dialog لإقامة تنبيه عند تحميل مكون إضافي ، في نفس العملية. يمكنك بعد ذلك إرفاق Debugger بهذه العملية ، ونأمل أن يلتقط الخطأ.

يمكنك النظر في نفس ناري لمعرفة ما إذا كان يمكنك اكتشاف أي اختلافات كبيرة في رمز التهيئة ، منذ ذلك الحين نفس ناري يعمل بشكل جيد في الكروم. أوصي بتوصيل مصحح أخطاء ، والتجول عبر الكود حتى يعطل. اضبط نقاط التوقف في كل نقطة إدخال ، على NPP_NEW و NPP_DESTROY و NPP_SETWINDOW ، ومعرفة ما يحدث.

هناك خيار آخر هو محاولة بناء الكروم من المصدر (ليس صعبًا بشكل يبعث على السخرية ، ولكن يستغرق وقتًا طويلاً) وبعد ذلك يمكنك الحصول على تتبع مكدس كامل إلى حيث يتوقف عن العمل.

حظا طيبا وفقك الله!

نصائح أخرى

بفضل نصيحة Taxilian ، تمكنت من تصحيح تسلسل التهيئة واكتشفت أن المكون الإضافي للمثال كان يعيد خطأ عندما كان Chrome يدعو NP_Initialize (). يحتوي المكون الإضافي على سبيل المثال على فحص للتأكد من أن تعريف بنية NPNetScapeFuncs المستخدم في تكوين المكون الإضافي كان على الأقل بنفس حجم الحجم الذي يقدمه المتصفح. يبدو أن Chrome يستخدم الإصدار 19 من الهيكل الأصغر بشكل طبيعي من الإصدار 22 من أحدث عداء Mozilla Xul SDK الذي كنت أحصل منه npapi.h و npruntime.h.

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