เครื่องมือสำหรับการวิเคราะห์ความครอบคลุมระดับไบนารีที่มีประสิทธิภาพ BCOV Instruments X86-64 ELF Binaries ที่ไม่มีการสนับสนุนคอมไพเลอร์ มันมีคุณสมบัติการตัดแต่งกิ่งการวิเคราะห์ CFG ที่แม่นยำและเทคนิคการใช้เครื่องมือวัดที่ซับซ้อน เราสรุปการวิจัยนี้ในวิดีโอทีเซอร์ 2 นาที
bcov มีให้ที่นี่ อย่างไรก็ตามชุดมาตรฐานที่สมบูรณ์มีอยู่ในที่เก็บเอกสารสำคัญของเรา ต้องมีแพ็คเกจซอฟต์แวร์ต่อไปนี้:
next Commit #C3B4CE1901master Branch UNICORN #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 ที่อ้างถึงนโยบาย Leaf-Node
ข้อมูลความครอบคลุมสามารถทิ้งได้โดยการฉีด 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 เช่น 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}
}
ซอฟต์แวร์นี้มีการแจกจ่ายภายใต้ใบอนุญาต MIT ดู LICENSE.txt สำหรับรายละเอียด