التقليل من حجم معلومات تصحيح الأخطاء لاختبار في موقع بعيد

StackOverflow https://stackoverflow.com//questions/25022483

سؤال

أحاول إنشاء طريقة لنقل معلومات التصحيح لمشروع C ++ إلى موقع بعيد للاختبار. في دورة التنمية الحالية، تتطلب التغييرات الصغيرة على التعليمات البرمجية بأكملها الثنائية (100s MB في الحجم ومعظم المعلومات المختصرة) المراد نقلها.

حاليا نهجي لمعالجة ذلك هو تقسيم معلومات التصحيح من ملفات الكائنات (حجمها بدون معلومات تصحيح الأخطاء يمكن التحكم فيها على اتصالي) باستخدام -gsplit-dwarf ثم تخفيض ملفات التصحيح ضد نسخة من نسخة من بناء حاليا على المربع البعيد.

الهدف هو الحصول على مجموعة من بقع ملفات التصحيح لمشروع بحيث يمكن تصحيح رمز جديد في موقع بعيد. إن الاتصال بين الموقع البعيد والآلة المحلية بطيئة للغاية، وبالتالي فإن تقليل حجم التصحيحات أمر أساسي ولكن يجب أن تكون متوازنة أيضا مع وقت التشغيل للأداة. لقد نظرت إلى BSDIFF و XDELTA كحلول محتملة وتشغيلها إلى غلادروم حيث XDetLA سريع ولكن كبير جدا و BSDIFF مثالي من حيث الحجم ولكن وقت التشغيل ومتطلبات الذاكرة أعلى قليلا مما كنت أرغب في ذلك.

هل هناك أداة أو نهج مفقود أم أن أذهب إلى هذه الطريقة الخطأ؟ بعض البديل bsdiff و xdelta ربما؟ أعلم أن أداة مثل GBDServer لن تعمل في هذه الحالة بسبب بعض المتطلبات التي لدينا مع التصحيح الفعلي. هل يمكن أن يساعد بعض التغيير في BSDIFF الأداء؟ وبالفعل إذا كان النهج الذي أستخدمه هو الصوت، فما هي طريقة جيدة للحفاظ على نسخة من البناء على الجهاز البعيد حولها إلى فرق.

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

المحلول

أبسط طريقة هي استخدام "الشريط" لنسخ Debuginfo إلى ملف منفصل ".debug"، ثم استخدم "الشريط" مرة أخرى لإزالة معلومات التصحيح من القابل للتنفيذ الذي ستنشره. يوضح دليل "الشريط" كيفية القيام بذلك، ابحث عن خيار "- Olly-Trebug".

بعد القيام بذلك، يمكنك معرفة GDB حول معلومات التصحيح المنفصلة بطرق مختلفة. أفضل طريقة هي استخدام ميزة "Build-id". هذا ما تفعله توزيعة لينكس الحديثة. ومع ذلك هناك طرق أخرى أيضا. هناك قسم كامل في دليل GDB حول ملفات تصحيح منفصلة.

نقطة المفتاح هنا هو أنه يمكنك بدء تشغيل GDB على الملف التنفيذي المحرز وستجد معلومات التصحيح المنفصلة تلقائيا. يمكن أن تكون هذه البيانات محلية، لذلك لن تحتاج إلى نشر معلومات التصحيح.

إذا كنت لا تزال تهتم بتقليص معلومات التصحيح حتى عندما يتم ذلك، يمكنك إلقاء نظرة على أداة "DWZ". هذا ضاغط قزم. ومع ذلك، هذا عادة ما يهم فقط إذا كنت تخطط لشحن معلومات التصحيح في مكان ما - استخدمه لتجعله أسهل في تنزيل معلومات التصحيح، لكن المستخدمين العاديين لن يروا حقا الحاجة.

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