أداة لتحليل التغطية الثنائية الفعالة. BCOV الأدوات الثابتة X86-64 ثنائيات ELF دون دعم مترجم. إنه يتميز بتشذيب التحقيق ، وتحليلات CFG دقيقة ، وتقنيات الأجهزة المتطورة. لقد لخص هذا البحث في فيديو دعائي لمدة دقيقتين.
bcov متاحة هنا. ومع ذلك ، فإن المجموعة الكاملة من المعايير متاحة على مستودعنا الأرشيفي. يجب أن تتوفر حزم البرامج التالية:
next الالتزام #C3B4CE1901master فرع يونيكورن الالتزام #536C4E77C4 يجب أن تعمل الإصدارات اللاحقة من كلا الإطارين من حيث المبدأ ولكن لم يتم اختبارها بعد. يمكن استخدام برنامج Script install.sh للتثبيت.
نحن نقدم Dockerfile يقوم بتثبيت BCOV ويدير تجربة تحليل التغطية. يرجى الخروج من القطع الأثرية الإضافية لمزيد من التفاصيل.
تدعم الأداة أوضاع التشغيل التالية التي يتم تعيينها باستخدام الخيار --mode (أو ببساطة -m ):
patch . تصحيح ثنائي معين.report . تغطية الإبلاغ عن ملف ثنائي مصحح وملف بيانات التغطية.dump . تفريغ الرسوم البيانية المختلفة للبرنامج لوظيفة معينة. على سبيل المثال ، تفريغ الأشجار CFG و Dominator.يمكن إصدار الأمر التالي لتصحيح ثنائي ،
bcov -m patch -p any -v 5 -i perl -o perl.any يمكن ضبط سياسة الأجهزة على any ، والتي تشير إلى سياسة أي عقدة ، أو all ما يشير إلى سياسة عقدة الأوراق.
يمكن إلقاء بيانات التغطية عن طريق حقن libbcov-rt.so باستخدام آلية LD_PRELOAD . على سبيل المثال ، يمكنك تجربة عينة perl.any التي يمكن العثور عليها في مستودع القطع الأثرية ،
export BCOV_OPTIONS= " coverage_dir= $PWD " # sets the directory for dumping coverage data. Defaults to $PWD
export LD_PRELOAD= " [full-path-to-bcov-rt]/libbcov-rt.so "
./perl.any -e ' print "Hello, bcov!n" 'سيؤدي ذلك إلى إنتاج ملف تفريغ يحتوي على امتداد ".bcov" في الدليل الحالي. يمكن توفير هذا الملف إلى BCOV للإبلاغ عن التغطية ،
bcov -m report -p any -i ./perl -d perl.any.1588260679.1816.bcov > report.out حاليًا ، لا يمكن لـ BCOV استمرار نتائج التحليل على القرص. لذلك ، يجب إعادة تحليل الثنائي الأصلي للإبلاغ عن التغطية. سيتم الإبلاغ عن التغطية لكل كتلة أساسية في report.out الملف. البيانات في كل سطر يسرد:
أيضا ، تم الإبلاغ عن ملخص التغطية لكل وظيفة. على سبيل المثال ، يوضح النسب الأساسية لتغطية التغطية.
بالنسبة لوظيفة معينة ، من الممكن تفريغ الرسوم البيانية المختلفة للبرنامج بشكل انتقائي مثل CFG و Superblock Dominator الرسم البياني. على سبيل المثال ، فكر في الدالة S_search_const في perl ،
bcov -m dump -f " S_search_const " -i ./perlسيؤدي هذا الأمر إلى تفريغ الملفات التالية:
يتم إلقاء الرسوم البيانية بتنسيق DOT القياسي ويمكن عرضها باستخدام عارض DOT مثل xdot . يرجى الرجوع إلى منشور المدونة هذا للحصول على تفاصيل إضافية.
للاستشهاد في عمل أكاديمي يرجى استخدام:
@inproceedings{BenKhadra:FSE2020,
address = {Virtual Event, USA},
author = {{Ben Khadra}, M. Ammar and Stoffel, Dominik and Kunz, Wolfgang},
booktitle = {ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering - ESEC/FSE'20},
doi = {10.1145/3368089.3409694},
pages = {1153--1164},
publisher = {ACM Press},
title = {{Efficient Binary-Level Coverage Analysis}},
year = {2020},
month = {nov},
day = {6--13}
}
يتم توزيع هذا البرنامج تحت رخصة معهد ماساتشوستس للتكنولوجيا. انظر LICENSE.txt للحصول على التفاصيل.