以前做過一些gcov方面的工作,最近又做,發(fā)現(xiàn)一些踩過的坑被忘記了,又整理了一遍,防止再次出現(xiàn)類似情況。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供臺(tái)安企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為臺(tái)安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
使用gcov測試代碼覆蓋率的流程是:
添加編譯選項(xiàng)和鏈接選項(xiàng)-----》運(yùn)行程序(設(shè)置GCOV_PREFIX,設(shè)置GCOV_PREFIX_STRIP環(huán)境變量)-----》讓程序正常結(jié)束(kill不會(huì)生成相關(guān).gcda文件)-----》運(yùn)行g(shù)cov命令手動(dòng)分析或用lcov來分析,lcov可能需要手動(dòng)安裝,安裝地址https://github.com/linux-test-project/lcov.git
1,在編譯選項(xiàng)中添加-ftest-coverage -fprofile-arcs,
-fkeep-static-functions -fkeep-inline-functions選項(xiàng)可另行選用
在鏈接選項(xiàng)中添加 -lgcov,特別要注意,編譯生成的.so中,也要鏈接-lgcov,
即在生成的可執(zhí)行程序和.so中,都需要鏈接-lgcov
2,運(yùn)行程序,先設(shè)置GCOV_PREFIX和GCOV_PREFIX_STRIP環(huán)境變量,也可以不設(shè)置,不設(shè)置時(shí),生成的.gcda文件在make時(shí)的目錄及其子目錄下,即與相關(guān)的源代碼路徑相同,只是文件名不同。
這兩個(gè)變量,可以控制生成的.gcda的位置
GCOV_PREFIX_STRIP去掉原代碼路徑中的前幾級(jí),
比如源代碼路徑為/a/b/c/d.cpp,如果GCOV_PREFIX_STRIP=2
則實(shí)際使用的路徑是c/d.cpp
如果GCOV_PREFIX=/run/gcov,則.gcda實(shí)際存放的路徑是/run/gcov/c/d.gcda
程序運(yùn)行后,可以進(jìn)行正常的業(yè)務(wù)測試
3,讓程序正常結(jié)束,比如處理特定信號(hào)并exit(0),或其他方式,把程序kill掉不會(huì)生成相關(guān)的.gcda
4,gcov命令分析見 gcov -h,下面附一個(gè)lcov的小腳本:
#!/bin/sh
#如果lcov沒有裝,要先裝lcov
#可以從 https://github.com/linux-test-project/lcov.git 上裝
#使用前注意事項(xiàng)
#1,啟用gcov相關(guān)編譯選項(xiàng),見make gcov=1
#2,需要在程序運(yùn)行并正常退出后,運(yùn)行此腳本,生成相關(guān)覆蓋率文件
echo "check lcov cmd"
lcov=$(command -v lcov | wc -l)
if [[ ${lcov} == 0 ]]; then
echo 請(qǐng)先安裝 lcov, 安裝來源可以參考 https://github.com/linux-test-project/lcov.git
exit 0
fi
echo "creating ../gcov"
if [[! -d ../gcov ]]; then
mkdir ../gcov
fi
echo "creating ../gcov/gcov.info"
lcov -c -o ../gcov/gcov.info -d ../src
echo "creating htmls "
if [[! -d ../gcov/html ]]; then
mkdir ../gcov/html
fi
genhtml -o ../gcov/html ../gcov/gcov.info
網(wǎng)站標(biāo)題:gcov使用注意事項(xiàng)
文章轉(zhuǎn)載:http://redsoil1982.com.cn/article18/pooidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、用戶體驗(yàn)、微信小程序、App開發(fā)、企業(yè)建站、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)