bcov
1.0.0
有效二進制覆蓋範圍分析的工具。 BCOV靜態儀器X86-64沒有編譯器支持的精靈二進製文件。它具有探針修剪,精確的CFG分析和復雜的儀器技術。我們在2分鐘的預告片視頻中總結了這項研究。
bcov修補的二進製文件的樣本集可在此處使用。但是,我們的檔案存儲庫中提供了完整的基準集。 必須可用以下軟件包:
next提交#C3B4CE1901master Commit#536C4E77C4以後的兩個框架版本應原則上有效,但尚未進行測試。腳本install.sh可用於安裝。
我們提供了安裝BCOV並運行覆蓋範圍分析實驗的Dockerfile。請查看補充工件以獲取更多詳細信息。
該工具支持以下使用選項--mode (或簡單-m )設置的操作模式:
patch 。補丁給定的二進制。report 。報告覆蓋範圍給定修補的二進製文件和覆蓋範圍數據文件。dump 。轉儲給定功能的各種程序圖。例如,傾倒CFG和Dominator樹。可以發出以下命令來修補二進制
bcov -m patch -p any -v 5 -i perl -o perl.any可以將儀器策略設置為any引用任何節點策略或指葉子節點策略的all內容。
可以通過使用LD_PRELOAD機構注入libbcov-rt.so來傾倒覆蓋範圍數據。例如,您可以嘗試在文物存儲庫中找到的樣本二進制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圖。例如,考慮perl中的函數S_search_const ,
bcov -m dump -f " S_search_const " -i ./perl此命令將轉儲以下文件:
圖形以標準點格式傾倒,可以使用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 。