Gcov - Gcov - Wikipedia

gcov
Operatsion tizimUnixga o'xshash
TuriKodni qamrab olish
LitsenziyaGNU umumiy jamoat litsenziyasi va boshqalar bepul dasturiy ta'minot litsenziyalari[qaysi? ]
Veb-saytgcc.gnu.org/ onlineocs/ gcc/ Gcov.html

Gcov a manba kodini qamrab olish tahlil va bayonotlarni bayon qilish profil yaratish vosita. Gcov dasturdagi har bir bayonot necha marta bajarilganligi va izohlanganligini aniq sanab chiqadi manba kodi asboblarni qo'shish. Gcov standart dastur sifatida keladi GNU kompilyatori to'plami (GCC) to'plami.[1]

Gcov yordam dasturi qancha vaqt ichida a haqida ma'lumot beradi dastur kod segmentlarini bajaradi.[2] U ijro chastotalari bilan izohlangan manba faylining nusxasini ishlab chiqaradi. Gcov yordam dasturi vaqtga asoslangan ma'lumotlarni ishlab chiqarmaydi va faqat GCC to'plami bilan tuzilgan kodda ishlaydi. Qo'llanma, uni boshqa profillash yoki sinovlarni qamrab olish mexanizmlariga mos kelmasligini da'vo qiladi,[3] lekin u ishlaydi lvm - yaratilgan fayllar ham.

Tavsif

gcov maxsus asbobning sinov qamrovini tahlilini ishlab chiqaradi dastur. Variantlar -fprofile-arcs -ftest-qamrov qamrovni tahlil qilish dasturini tuzishda foydalanilishi lozim (birinchi variant filial statistikasini qayd etish uchun, ikkinchisi esa chiziqlar sonini saqlash uchun); -frofil-yoylar dasturni bog'lash uchun ham foydalanish kerak.[2] Bunday dastur ishga tushirilgandan so'ng ".bb" ".bbg" va ".da" kengaytmalari (qo'shimchalari) bilan bir nechta fayllar yaratiladi, ularni gcov tomonidan tahlil qilish mumkin. Bu manba fayllarini buyruq qatori argumentlari sifatida qabul qiladi va izohli manba ro'yxatini ishlab chiqaradi. Dastlabki kodning har bir satrida prefiks necha marta bajarilganligi ko'rsatilgan; bajarilmagan qatorlar oldiga "#####" qo'shiladi.[2]

gcov deb nomlangan logfile yaratadi sourcefile.gcov manba faylining har bir satri necha marta ko'rsatilganligini ko'rsatadi sourcefile.c ijro etdi. Ushbu izohli manba faylidan foydalanish mumkin gprof, dastur haqida vaqt ma'lumotlarini olish uchun yana bir profillash vositasi.

Misol

Quyida yozilgan dastur C dasturlash tili, ko'chadan 1 dan 9 gacha bo'lgan butun sonlar ustida va ularning bo'linishini modul (%) operatori bilan sinab ko'radi.

# shu jumladan <stdio.h>intasosiy (bekor){  int men;  uchun (men = 1; men < 10; men++)    {      agar (men % 3 == 0)        printf ("% d 3 ga bo'linadi n", men);      agar (men % 11 == 0)        printf ("% d 11 ga bo'linadi n", men);    }  qaytish 0;}

Sinovni qamrab olish uchun dastur quyidagi variantlar bilan tuzilishi kerak:

$ gcc -Wall -fprofile-arcs -ftest-cover cov.c

bu erda cov.c - dastur faylining nomi. Bu asbobni yaratadi bajariladigan unda dasturning har bir satri necha marta bajarilganligini yozadigan qo'shimcha ko'rsatmalar mavjud. Variant - eng yaxshi qamrov individual satrlarning necha marta bajarilishini hisoblash uchun ko'rsatmalar qo'shadi, while -frofil-yoylar dasturning har bir bo'limi uchun asboblar kodini o'z ichiga oladi. Filial asboblari turli xil yo'llarning "if" iboralari va boshqa shartli holatlar orqali qanchalik tez-tez o'tishini qayd etadi. The bajariladigan keyin qamrov ma'lumotlarini yaratish uchun ishga tushirish kerak. Yugurishdan olingan ma'lumotlar bir nechta fayllarga tegishli ravishda ".bb" ".bbg" va ".da" kengaytmalari bilan yoziladi. katalog. Ushbu ma'lumotlar gcov buyrug'i va manba fayl nomi yordamida tahlil qilinishi mumkin:

$ gcov cov.c  Cov.c faylida bajarilgan 9 ta manba satrining 88,89%Cov.c.gcov-ni yaratish

The gcov buyrug'i asl nusxaning izohli versiyasini ishlab chiqaradi manba fayli, ".gcov" kengaytmasi bilan, har bir satr necha marta bajarilganligini hisoblashni o'z ichiga oladi:

        # shu jumladan <stdio.h>        int        asosiy (bekor)        {     1    int men;    10    uchun (men = 1; men < 10; men++)            {     9        agar (men % 3 == 0)     3          printf ("% d 3 ga bo'linadi n", men);     9        agar (men % 11 == 0)###### printf ("% d 11 ga bo'linadi  n", i);     9      }     1    qaytish 0;     1  }

Chiziqlar sonini chiqishning birinchi ustunida ko'rish mumkin. Bajarilmagan qatorlar "######" xeshlari bilan belgilanadi.

Buyruq satri parametrlari

Gcov buyruq qatori yordam dasturi profil ma'lumotlaridan izohli fayllarni yaratishda quyidagi variantlarni qo'llab-quvvatlaydi:[4][5]

  • -h (--Yordam bering): Gcov-dan foydalanish bo'yicha yordamni ko'rsatish (standart chiqish bo'yicha) va qo'shimcha ishlov bermasdan chiqish.
  • -v (- versiya): Gcov versiya raqamini ko'rsating (standart chiqishda) va qo'shimcha ishlov bermasdan chiqing.
  • -a (- barcha bloklar): Har bir asosiy blok uchun individual ijro sonlarini yozing. Odatda gcov natijalarini bajarish faqat chiziqning asosiy bloklari uchun hisoblanadi. Ushbu parametr yordamida bitta satr ichidagi bloklar bajarilmasligini aniqlashingiz mumkin.
  • -b (- filial ehtimollari): Chiqish fayliga filial chastotalarini yozing va standart chiqishga filialning qisqacha ma'lumotlarini yozing. Ushbu parametr sizning dasturingizdagi har bir filialning qanchalik tez-tez olinganligini ko'rish imkonini beradi. -U opsiyasi berilmasa, shartsiz filiallar ko'rsatilmaydi.
  • -c (- filiallar soni): Filial chastotalarini olingan filiallar foiziga emas, balki olingan filiallar soni sifatida yozing.
  • -n (- chiqmaydi): Gcov chiqish faylini yaratmang.
  • -l (- uzun fayl nomlari): Qo'shilgan manba fayllari uchun uzun fayl nomlarini yarating. Masalan, agar x.h sarlavha fayli kodni o'z ichiga olgan bo'lsa va a.c faylga kiritilgan bo'lsa, u holda a.c faylida gcov-ni ishga tushirish x.h.gcov o'rniga a.c ## x.h.gcov deb nomlangan faylni hosil qiladi. Agar x.h bir nechta manba fayllariga kiritilgan bo'lsa va shaxsiy hissalarni ko'rishni xohlasangiz, bu foydali bo'lishi mumkin. Agar siz "-p" parametridan foydalansangiz, ikkala fayl nomlari ham to'liq yo'l nomlari bo'ladi.
  • -p (- saqlanadigan yo'llar): Yaratilgan .gcov fayllari nomidagi to'liq yo'l ma'lumotlarini saqlang. Ushbu parametrsiz faqat fayl nomi komponentasi ishlatiladi. Ushbu parametr yordamida barcha kataloglardan foydalaniladi, "/" belgilar "#" belgilarga tarjima qilingan,. katalog komponentlari olib tashlandi va olib tashlanmadi .. "^" ga o'zgartirildi. Agar manba fayllari bir nechta turli xil kataloglarda bo'lsa, bu foydali bo'ladi.
  • -r (- faqat tegishli): Faqat nisbiy yo'l nomiga ega bo'lgan manba fayllari haqida ma'lumot chiqaradi (manba prefiksidan keyin) Mutlaq yo'llar odatda tizim sarlavhasi fayllari bo'lib, undagi har qanday ichki funktsiyalarni qamrab olish odatda qiziq emas.
  • -f (--funktsiya-xulosalar): Fayl darajasining xulosasiga qo'shimcha ravishda har bir funktsiya uchun xulosalar.
  • -o katalogi | fayl (--obekt-katalog katalogi yoki --object-fayl fayli): Yoki gcov ma'lumotlar fayllarini o'z ichiga olgan katalogni yoki ob'ekt yo'lining nomini ko'rsating. Ushbu parametr yordamida .gcno va .gcda ma'lumotlar fayllari qidirilmoqda. Agar katalog ko'rsatilgan bo'lsa, ma'lumotlar fayllari ushbu katalogda joylashgan va kengaytirilgan holda, kiritilgan fayl nomi bilan nomlangan. Agar bu erda fayl ko'rsatilgan bo'lsa, ma'lumotlar fayllari ushbu fayl nomiga kengaytirilgan holda beriladi.
  • -s katalogi (--source-prefiks katalogi): Chiqish qamrovi fayllarini yaratishda o'chirish uchun manba fayllari nomlari uchun prefiks. Ushbu parametr alohida katalog yaratishda foydalidir va chiqish fayli nomlarini aniqlashda manba katalogiga yo'l nomi kerak emas. Shuni esda tutingki, ushbu prefiksni aniqlash manba faylining mutloqligini aniqlashdan oldin qo'llaniladi.
  • -u (- shartsiz-filiallar): Filialning ehtimolliklari berilganida, shartsiz filiallarning ehtimolliklarini kiriting. Shartsiz filiallar odatda qiziq emas.
  • -d (- displey-taraqqiyot): Standart chiqindagi harakatni ko'rsatish.

Qopqoq xulosalar

Lcov a grafik old tomon gcov uchun. U bir nechta manba fayllari uchun gcov ma'lumotlarini to'playdi va yaratadi HTML qamrov ma'lumotlari bilan izohlangan manba kodini o'z ichiga olgan sahifalar. Bundan tashqari, fayl tarkibida oson navigatsiya qilish uchun umumiy sahifalar qo'shiladi. Lcov bayonotni, funktsiyani va filialni qamrab olishni o'lchaydi.[6] Shuningdek, a Windows versiyasi.

Gcovr gcov-dan foydalanishni boshqarish va kodlashning umumlashtirilgan natijalarini yaratish uchun yordamchi dasturni taqdim etadi. Ushbu buyruq Python-da shunga o'xshash yordam dasturini taqdim etadigan Python cover.py to'plamidan ilhomlangan. Gcovr inson tomonidan o'qiladigan ixcham xulosalar, mashinada o'qiladigan XML hisobotlarini yoki grafik HTML xulosalarini ishlab chiqaradi. Gcovr tomonidan yaratilgan XML hisobotlari tomonidan ishlatilishi mumkin Jenkins grafik kodni qamrab olish xulosalarini taqdim etish. Gcovr bayonotni va filiallar qamrovini o'lchashni qo'llab-quvvatlaydi[7]

SCov gcov tomonidan yaratilgan oraliq matn formatini (gcov -i yordamida) kodni qamrab olish bo'yicha hisobotlarni yaratish uchun ishlaydigan dasturdir. Ushbu hisobotlar oddiy matnli hisobot yoki bo'lishi mumkin HTML batafsilroq hisobotlar bilan sahifalar.[8]

Shuningdek qarang

  • Tsov - Sun Studio to'plamida taqdim etilgan Solaris uchun kodni qoplash vositasi

Adabiyotlar

  1. ^ "Gcov qanday ishlaydi - GCCning asbob qismi" (PDF). Arxivlandi asl nusxasi (PDF) 2014 yil 9 aprelda. Olingan 12 fevral, 2012. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  2. ^ a b v Brayan J. Gou. GCC ga kirish - gcc va g ++ kompilyatorlari uchun - gcov bilan qamrab olish testi. Olingan 12 fevral, 2012.
  3. ^ "gcov man sahifasi". Olingan 12 fevral, 2012.
  4. ^ gnu.org. "Gcov buyruq qatori parametrlari". Olingan 11-fevral, 2012.
  5. ^ Linux buyruqlari. "Gcov buyruq qatori parametrlari". Arxivlandi asl nusxasi 2013-01-08 da. Olingan 12-fevral, 2012.
  6. ^ "Lcov".
  7. ^ "Gcovr".
  8. ^ "SCov".