كيفية معرفة المكتبة هي مكتبة التصحيح أو الإفراج؟

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

سؤال

أنا أستخدم مكتبة MySQL CPP. أنا الخروج النسخة الأخيرة من هناك جذع bzr و تستخدم cmake لتوليد المكتبة.

لأول مرة استخدمت وضع الإصدار والمرة الثانية استخدم وضع التصحيح للبناء. كلتا المكتبة لديها giveacodicetagpre.

هل هناك طريقة للتحقق في البرامج (رمز C أو C ++) أو استخدام NM تلك المكتبة هي مكتبة الإفراج أو مكتبة التصحيح

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

المحلول

لقد رأيت سلبيات كاذبة مع NM لذلك أنا لا أثق به.عندما أرغب في التحقق لمعرفة ما إذا كان ملف كائن لديه معلومات تصحيح أخطاء قمت بتشغيل Objdump -x على ملف الكائنات أو المكتبة وينظر لمعرفة ما إذا كان هناك رؤوس تقول DBG أو طعنات أو قزم.هذا ليس الحل الأكثر أناقة بأي وسيلة، لكنها لم تكن خاطئة أبدا، ومن السهل جدا أن نرى الفرق عند الحصول على تصحيح وإصدار إصدار للمقارنة.

نصائح أخرى

Do objdump -x , store the output in a file and search for dll . If you see the library linking with windows release library then its Release version otherwise debug version.

Differences between debug and release builds are typically due to invalid code being optimized differently, rather than incompatibilities, so it is sheer luck that one of them works and the other doesn't (it could also be the other way 'round).

Run the program under valgrind to see whether that flags any illegal accesses.

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