sh4-linux-gnu-gcov - Dalam Talian di Awan

Ini ialah arahan sh4-linux-gnu-gcov yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

JADUAL:

NAMA


gcov - alat ujian liputan

SINOPSIS


gcov [-v|--versi] [-h|- membantu]
[-a|--semua-blok]
[-b|--cawangan-kebarangkalian]
[-c|--cawangan-kiraan]
[-d|--paparan-kemajuan]
[-f|--fungsi-ringkasan]
[-i|--format-perantaraan]
[-l|--nama-fail-panjang]
[-m|--demangled-nama]
[-n|--tiada-keluaran]
[-o|--direktori-objek direktori|fail]
[-p|--pelihara-laluan]
[-r|--saudara-sahaja]
[-s|--awalan-sumber direktori]
[-u|--cawangan-tanpa syarat]
fail

DESCRIPTION


gcov ialah program liputan ujian. Gunakannya bersama GCC untuk menganalisis program anda
membantu mencipta kod berjalan yang lebih cekap, lebih pantas dan menemui bahagian anda yang belum diuji
program. Anda boleh gunakan gcov sebagai alat pemprofilan untuk membantu mengetahui tempat pengoptimuman anda
usaha akan memberi kesan terbaik kepada kod anda. Anda juga boleh menggunakan gcov bersama-sama dengan profil yang lain
alat, gprof, untuk menilai bahagian kod anda yang menggunakan jumlah masa pengkomputeran yang paling banyak.

Alat pemprofilan membantu anda menganalisis prestasi kod anda. Menggunakan profiler seperti gcov
or gprof, anda boleh mengetahui beberapa statistik prestasi asas, seperti:

* kekerapan setiap baris kod dilaksanakan

* baris kod apa yang sebenarnya dilaksanakan

* berapa banyak masa pengkomputeran yang digunakan oleh setiap bahagian kod

Sebaik sahaja anda mengetahui perkara ini tentang cara kod anda berfungsi apabila disusun, anda boleh melihat setiap satu
modul untuk melihat modul mana yang harus dioptimumkan. gcov membantu anda menentukan tempat untuk bekerja
pada pengoptimuman.

Pembangun perisian juga menggunakan ujian liputan bersama-sama dengan testsuites, untuk memastikan
perisian sebenarnya cukup baik untuk keluaran. Testsuites boleh mengesahkan bahawa program
berfungsi seperti yang diharapkan; program liputan menguji untuk melihat berapa banyak program itu dilaksanakan oleh
testsuite. Pembangun kemudian boleh menentukan jenis kes ujian yang perlu ditambahkan
testsuites untuk mencipta kedua-dua ujian yang lebih baik dan produk akhir yang lebih baik.

Anda harus menyusun kod anda tanpa pengoptimuman jika anda bercadang untuk menggunakan gcov kerana
pengoptimuman, dengan menggabungkan beberapa baris kod ke dalam satu fungsi, mungkin tidak memberikan anda sebanyak itu
maklumat kerana anda perlu mencari `titik panas' di mana kod itu menggunakan banyak perkara
masa komputer. Begitu juga, kerana gcov mengumpul statistik mengikut baris (pada tahap terendah
resolusi), ia berfungsi paling baik dengan gaya pengaturcaraan yang meletakkan hanya satu pernyataan pada setiap satu
barisan. Jika anda menggunakan makro rumit yang berkembang kepada gelung atau kepada struktur kawalan lain,
statistik kurang membantu---ia hanya melaporkan pada baris tempat panggilan makro
muncul. Jika makro kompleks anda berkelakuan seperti fungsi, anda boleh menggantikannya dengan sebaris
berfungsi untuk menyelesaikan masalah ini.

gcov mencipta fail log dipanggil sourcefile.gcov yang menunjukkan berapa kali setiap baris
fail sumber sourcefile.c telah dilaksanakan. Anda boleh menggunakan fail log ini bersama-sama dengan gprof kepada
membantu dalam memperhalusi prestasi program anda. gprof memberikan maklumat masa anda
boleh gunakan bersama-sama dengan maklumat yang anda perolehi gcov.

gcov berfungsi hanya pada kod yang disusun dengan GCC. Ia tidak serasi dengan mana-mana pemprofilan lain
atau mekanisme liputan ujian.

PILIHAN


-h
- membantu
Paparkan bantuan tentang penggunaan gcov (pada output standard), dan keluar tanpa melakukan apa-apa
pemprosesan selanjutnya.

-v
--versi
Paparkan gcov nombor versi (pada output standard), dan keluar tanpa melakukan apa-apa
pemprosesan selanjutnya.

-a
--semua-blok
Tulis kiraan pelaksanaan individu untuk setiap blok asas. Biasanya keluaran gcov
pelaksanaan hanya dikira untuk blok utama baris. Dengan pilihan ini anda boleh
tentukan jika blok dalam satu baris tidak dilaksanakan.

-b
--cawangan-kebarangkalian
Tulis frekuensi cawangan ke fail output, dan tulis maklumat ringkasan cawangan ke fail
keluaran standard. Pilihan ini membolehkan anda melihat kekerapan setiap cawangan dalam program anda
telah diambil. Cawangan tanpa syarat tidak akan ditunjukkan, melainkan -u pilihan diberi.

-c
--cawangan-kiraan
Tulis kekerapan cawangan sebagai bilangan cawangan yang diambil, bukannya peratusan
daripada cawangan yang diambil.

-n
--tiada-keluaran
Jangan cipta gcov fail keluaran.

-l
--nama-fail-panjang
Cipta nama fail yang panjang untuk fail sumber yang disertakan. Sebagai contoh, jika fail pengepala xh
mengandungi kod, dan telah dimasukkan ke dalam fail ac, kemudian berlari gcov pada fail ac
akan menghasilkan fail output dipanggil ac##xhgcov bukan xhgcov. Ini boleh
berguna jika xh disertakan dalam berbilang fail sumber dan anda ingin melihat individu tersebut
sumbangan. Jika anda menggunakan -p pilihan, kedua-dua nama fail termasuk dan disertakan
akan menjadi nama laluan yang lengkap.

-p
--pelihara-laluan
Kekalkan maklumat laluan lengkap dalam nama yang dijana .gcov fail. Tanpa
pilihan ini, hanya komponen nama fail digunakan. Dengan pilihan ini, semua direktori
digunakan, dengan / aksara diterjemahkan kepada # watak, . komponen direktori dialih keluar
dan tidak boleh ditanggalkan .. komponen ditukar nama kepada ^. Ini berguna jika fail sumber berada dalam
beberapa direktori yang berbeza.

-r
--saudara-sahaja
Hanya keluarkan maklumat tentang fail sumber dengan nama laluan relatif (selepas source
penyingkiran awalan). Laluan mutlak biasanya fail pengepala sistem dan liputan mana-mana
fungsi sebaris di dalamnya biasanya tidak menarik.

-f
--fungsi-ringkasan
Ringkasan output untuk setiap fungsi sebagai tambahan kepada ringkasan peringkat fail.

-o direktori|fail
--direktori-objek direktori
--fail-objek fail
Tentukan sama ada direktori yang mengandungi fail data gcov atau nama laluan objek.
. .gcno, dan .gcda fail data dicari menggunakan pilihan ini. Jika direktori adalah
ditentukan, fail data berada dalam direktori itu dan dinamakan sempena nama fail input,
tanpa sambungannya. Jika fail dinyatakan di sini, fail data dinamakan selepas
fail itu, tanpa sambungannya.

-s direktori
--awalan-sumber direktori
Awalan untuk nama fail sumber untuk dialih keluar semasa menjana fail liputan output.
Pilihan ini berguna apabila membina dalam direktori yang berasingan, dan nama laluan ke
direktori sumber tidak dikehendaki semasa menentukan nama fail output. Perhatikan bahawa ini
pengesanan awalan digunakan sebelum menentukan sama ada fail sumber adalah mutlak.

-u
--cawangan-tanpa syarat
Apabila kebarangkalian cawangan diberikan, masukkan kebarangkalian cawangan tanpa syarat.
Cawangan tanpa syarat biasanya tidak menarik.

-d
--paparan-kemajuan
Paparkan kemajuan pada output standard.

-i
--format-perantaraan
Keluarkan fail gcov dalam format teks perantaraan yang mudah dihuraikan yang boleh digunakan oleh lcov
atau alatan lain. Keluaran adalah tunggal .gcov fail per .gcda fail. Tiada kod sumber
diperlukan.

Format perantaraan .gcov fail ialah teks biasa dengan satu entri setiap baris

fail:
fungsi: , ,
lkira: ,
cawangan: ,

Dimanakah ialah
notexec (Cawangan tidak dilaksanakan)
diambil (Cawangan dilaksanakan dan diambil)
tidak diambil (Cawangan dilaksanakan, tetapi tidak diambil)

Boleh jadi berbilang entri dalam gcov perantaraan
fail. Semua penyertaan berikut a berkaitan dengan fail sumber itu
sehingga seterusnya kemasukan.

Berikut adalah contoh apabila -i digunakan bersama dengan -b pilihan:

fail:array.cc
fungsi:11,1,_Z3sumRKSt6vectorIPiSaIS0_EE
fungsi: 22,1, utama
lbilangan:11,1
lbilangan:12,1
lbilangan:14,1
cawangan:14, diambil
lbilangan:26,1
cawangan:28,tidak diambil

-m
--demangled-nama
Paparkan nama fungsi demangled dalam output. Lalai adalah untuk menunjukkan fungsi hancur
nama.

gcov harus dijalankan dengan direktori semasa sama seperti ketika anda menggunakan
penyusun. Jika tidak, ia tidak akan dapat mencari fail sumber. gcov menghasilkan fail
dipanggil mangledname.gcov dalam direktori semasa. Ini mengandungi maklumat liputan
daripada fail sumber yang sepadan dengannya. satu .gcov fail dihasilkan untuk setiap sumber (atau
header) fail yang mengandungi kod, yang telah disusun untuk menghasilkan fail data. The
nama rosak sebahagian daripada nama fail output biasanya hanya nama fail sumber, tetapi boleh
menjadi sesuatu yang lebih rumit jika -l or -p pilihan diberi. Rujuk kepada pilihan tersebut
untuk maklumat lanjut.

Jika anda menyeru gcov dengan berbilang fail input, sumbangan daripada setiap fail input adalah
dijumlahkan. Biasanya anda akan memanggilnya dengan senarai fail yang sama seperti pautan akhir
boleh laku anda.

. .gcov fail mengandungi : medan yang dipisahkan bersama dengan kod sumber program. Formatnya
is

: :

Maklumat blok tambahan mungkin berjaya setiap baris, apabila diminta oleh pilihan baris arahan.
. kiraan_perlaksanaan is - untuk baris yang tidak mengandungi kod. Garis yang tidak dilaksanakan ditanda #####
or ====, bergantung pada sama ada ia boleh dicapai melalui laluan bukan luar biasa atau hanya
laluan luar biasa seperti pengendali pengecualian C++, masing-masing.

Beberapa baris maklumat pada permulaan mempunyai nombor garisan daripada sifar. Garis mukadimah ini ialah
daripada borang tersebut

-:0: :

Susunan dan bilangan baris mukadimah ini akan ditambah sebagai gcov pembangunan
berkembang --- jangan bergantung pada mereka yang kekal tidak berubah. guna tag untuk mencari sesuatu tertentu
baris mukadimah.

Maklumat blok tambahan adalah dalam bentuk



. maklumat boleh dibaca oleh manusia, tetapi direka bentuk supaya cukup mudah untuk penghuraian mesin
juga.

Apabila mencetak peratusan, 0% dan 100% hanya dicetak apabila nilainya sebenarnya 0% dan
100% masing-masing. Nilai lain yang secara konvensional akan dibundarkan kepada 0% atau 100% ialah
sebaliknya dicetak sebagai nilai bukan sempadan yang terdekat.

Apabila menggunakan gcov, anda mesti terlebih dahulu menyusun atur cara anda dengan dua pilihan GCC khas:
-fprofile-arka -perlindungan-ftest. Ini memberitahu pengkompil untuk menjana tambahan
maklumat yang diperlukan oleh gcov (pada asasnya graf aliran program) dan juga termasuk
kod tambahan dalam fail objek untuk menjana maklumat profil tambahan yang diperlukan
oleh gcov. Fail tambahan ini diletakkan di dalam direktori di mana fail objek berada
berada.

Menjalankan program akan menyebabkan output profil dijana. Untuk setiap fail sumber
disusun dengan -fprofile-arka, pengiring .gcda fail akan diletakkan dalam fail objek
direktori.

Berlari gcov dengan nama fail sumber program anda sebagai argumen kini akan menghasilkan penyenaraian
kod bersama dengan kekerapan pelaksanaan untuk setiap baris. Sebagai contoh, jika program anda
dipanggil tmp.c, inilah yang anda lihat apabila anda menggunakan asas gcov kemudahan:

$ gcc -fprofile-arcs -ftest-liputan tmp.c
$ a.keluar
$ gcov tmp.c
90.00% daripada 10 talian sumber dilaksanakan dalam fail tmp.c
Mencipta tmp.c.gcov.

Fail tmp.c.gcov mengandungi keluaran daripada gcov. Berikut ialah contoh:

-: 0:Sumber:tmp.c
-: 0:Graf:tmp.gcno
-: 0:Data:tmp.gcda
-: 0:Larian:1
-: 0:Program:1
-: 1:#include
-: 2:
-: 3:int utama (kosong)
1: 4:{
1: 5: int i, jumlah;
-: 6:
1: 7: jumlah = 0;
-: 8:
11: 9: untuk (i = 0; i < 10; i++)
10: 10: jumlah += i;
-: 11:
1: 12: jika (jumlah != 45)
#####: 13: printf ("Kegagalan\n");
-: 14: lain
1: 15: printf ("Kejayaan\n");
1: 16: kembali 0;
-: 17:}

Apabila anda menggunakan -a pilihan, anda akan mendapat kiraan blok individu, dan output kelihatan
seperti ini:

-: 0:Sumber:tmp.c
-: 0:Graf:tmp.gcno
-: 0:Data:tmp.gcda
-: 0:Larian:1
-: 0:Program:1
-: 1:#include
-: 2:
-: 3:int utama (kosong)
1: 4:{
1: 4-blok 0
1: 5: int i, jumlah;
-: 6:
1: 7: jumlah = 0;
-: 8:
11: 9: untuk (i = 0; i < 10; i++)
11: 9-blok 0
10: 10: jumlah += i;
10: 10-blok 0
-: 11:
1: 12: jika (jumlah != 45)
1: 12-blok 0
#####: 13: printf ("Kegagalan\n");
$$$$$: 13-blok 0
-: 14: lain
1: 15: printf ("Kejayaan\n");
1: 15-blok 0
1: 16: kembali 0;
1: 16-blok 0
-: 17:}

Dalam mod ini, setiap blok asas hanya ditunjukkan pada satu baris -- baris terakhir blok. A
blok berbilang baris hanya akan menyumbang kepada kiraan pelaksanaan baris terakhir itu, dan lain-lain
baris tidak akan ditunjukkan mengandungi kod, melainkan blok sebelumnya berakhir pada baris tersebut. The
jumlah kiraan pelaksanaan baris ditunjukkan dan baris berikutnya menunjukkan kiraan pelaksanaan
untuk blok individu yang berakhir pada baris itu. Selepas setiap blok, cawangan dan panggilan dikira
daripada blok akan ditunjukkan, jika -b pilihan diberi.

Oleh kerana cara instrumen GCC membuat panggilan, kiraan panggilan boleh ditunjukkan selepas talian dengan no
blok individu. Seperti yang anda lihat, baris 13 mengandungi blok asas yang tidak dilaksanakan.

Apabila anda menggunakan -b pilihan, output anda kelihatan seperti ini:

$ gcov -b tmp.c
90.00% daripada 10 talian sumber dilaksanakan dalam fail tmp.c
80.00% daripada 5 cawangan dilaksanakan dalam fail tmp.c
80.00% daripada 5 cawangan diambil sekurang-kurangnya sekali dalam fail tmp.c
50.00% daripada 2 panggilan dilaksanakan dalam fail tmp.c
Mencipta tmp.c.gcov.

Berikut adalah sampel yang terhasil tmp.c.gcov fail:

-: 0:Sumber:tmp.c
-: 0:Graf:tmp.gcno
-: 0:Data:tmp.gcda
-: 0:Larian:1
-: 0:Program:1
-: 1:#include
-: 2:
-: 3:int utama (kosong)
fungsi utama dipanggil 1 mengembalikan 1 blok dilaksanakan 75%
1: 4:{
1: 5: int i, jumlah;
-: 6:
1: 7: jumlah = 0;
-: 8:
11: 9: untuk (i = 0; i < 10; i++)
cawangan 0 diambil 91% (jatuh)
cawangan 1 diambil 9%
10: 10: jumlah += i;
-: 11:
1: 12: jika (jumlah != 45)
cawangan 0 diambil 0% (jatuh)
cawangan 1 diambil 100%
#####: 13: printf ("Kegagalan\n");
panggilan 0 tidak pernah dilaksanakan
-: 14: lain
1: 15: printf ("Kejayaan\n");
panggilan 0 dipanggil 1 dikembalikan 100%
1: 16: kembali 0;
-: 17:}

Untuk setiap fungsi, satu baris dicetak menunjukkan berapa kali fungsi dipanggil, bagaimana
berkali-kali ia kembali dan berapa peratusan blok fungsi itu telah dilaksanakan.

Untuk setiap blok asas, satu baris dicetak selepas baris terakhir blok asas yang menerangkan
cawangan atau panggilan yang menamatkan blok asas. Terdapat beberapa cawangan dan panggilan
disenaraikan untuk satu baris sumber jika terdapat berbilang blok asas yang berakhir pada baris tersebut.
Dalam kes ini, cawangan dan panggilan masing-masing diberi nombor. Tiada cara mudah untuk
petakan cawangan ini dan panggil semula kepada binaan sumber. Secara umum, walaupun, yang paling rendah
cawangan atau panggilan bernombor akan sepadan dengan binaan paling kiri pada baris sumber.

Untuk cawangan, jika ia dilaksanakan sekurang-kurangnya sekali, maka peratusan yang menunjukkan bilangan
kali cawangan itu diambil dibahagikan dengan bilangan kali cawangan itu dilaksanakan
dicetak. Jika tidak, mesej "tidak pernah dilaksanakan" dicetak.

Untuk panggilan, jika ia telah dilaksanakan sekurang-kurangnya sekali, maka peratusan yang menunjukkan bilangan
kali panggilan dikembalikan dibahagikan dengan bilangan kali panggilan itu dilaksanakan
dicetak. Ini biasanya 100%, tetapi mungkin kurang untuk fungsi yang memanggil "keluar" atau
"longjmp", dan dengan itu mungkin tidak kembali setiap kali mereka dipanggil.

Kiraan pelaksanaan adalah terkumpul. Jika program contoh dilaksanakan semula tanpa
membuang .gcda fail, kiraan untuk bilangan kali setiap baris dalam sumber adalah
dilaksanakan akan ditambah kepada keputusan larian sebelumnya. Ini berpotensi berguna
dalam beberapa cara. Sebagai contoh, ia boleh digunakan untuk mengumpul data ke atas beberapa
program berjalan sebagai sebahagian daripada suite pengesahan ujian, atau untuk menyediakan jangka panjang yang lebih tepat
maklumat mengenai sejumlah besar program dijalankan.

Data dalam .gcda fail disimpan serta-merta sebelum program keluar. Untuk setiap
fail sumber disusun dengan -fprofile-arka, kod pemprofilan mula-mula cuba membaca dalam
sedia ada .gcda fail; jika fail tidak sepadan dengan boleh laku (bilangan asas yang berbeza
kiraan blok) ia akan mengabaikan kandungan fail. Ia kemudian menambah dalam pelaksanaan baharu
mengira dan akhirnya menulis data ke fail.

Menggunakan gcov bersama GCC Pengoptimuman

Sekiranya anda merancang untuk menggunakan gcov untuk membantu mengoptimumkan kod anda, anda mesti menyusun atur cara anda dahulu
dengan dua pilihan GCC istimewa: -fprofile-arka -perlindungan-ftest. Selain daripada itu, anda boleh
gunakan sebarang pilihan GCC lain; tetapi jika anda ingin membuktikan bahawa setiap baris dalam program anda
telah dilaksanakan, anda tidak seharusnya menyusun dengan pengoptimuman pada masa yang sama. Pada beberapa mesin
pengoptimum boleh menghapuskan beberapa baris kod mudah dengan menggabungkannya dengan baris lain.
Sebagai contoh, kod seperti ini:

jika (a != b)
c = 1;
lagi
c = 0;

boleh disusun menjadi satu arahan pada beberapa mesin. Dalam kes ini, tidak ada cara untuk
gcov untuk mengira kiraan pelaksanaan berasingan untuk setiap baris kerana tidak ada yang berasingan
kod untuk setiap baris. Oleh itu gcov output kelihatan seperti ini jika anda menyusun atur cara
dengan pengoptimuman:

100: 12: jika (a != b)
100: 13: c = 1;
100: 14: lain
100: 15: c = 0;

Output menunjukkan bahawa blok kod ini, digabungkan dengan pengoptimuman, dilaksanakan 100 kali.
Dari satu segi, keputusan ini betul, kerana hanya terdapat satu arahan yang mewakili
keempat-empat baris ini. Walau bagaimanapun, output tidak menunjukkan berapa kali hasilnya
ialah 0 dan berapa kali keputusannya ialah 1.

Fungsi inlineable boleh membuat kiraan baris yang tidak dijangka. Kiraan baris ditunjukkan untuk
kod sumber fungsi inlineable, tetapi apa yang ditunjukkan bergantung pada di mana fungsi itu berada
sebaris, atau jika ia tidak sebaris sama sekali.

Jika fungsi tidak sebaris, pengkompil mesti mengeluarkan salinan luar baris bagi
fungsi, dalam mana-mana fail objek yang memerlukannya. Jika failA.o and failB.o kedua-duanya mengandungi daripada
badan baris bagi fungsi inlineable tertentu, kedua-duanya juga akan mengandungi liputan
dikira untuk fungsi itu. Bila failA.o and failB.o dihubungkan bersama, penghubung akan,
pada banyak sistem, pilih salah satu daripada badan luar talian untuk semua panggilan ke fungsi itu,
dan keluarkan atau abaikan yang lain. Malangnya, ia tidak akan mengalih keluar kaunter perlindungan
untuk badan fungsi yang tidak digunakan. Oleh itu apabila diperalatkan, semua kecuali satu penggunaan fungsi itu
akan menunjukkan kiraan sifar.

Jika fungsi diselaraskan di beberapa tempat, struktur blok di setiap lokasi mungkin
tidak sama. Sebagai contoh, keadaan kini boleh dikira pada masa penyusunan masuk
beberapa contoh. Kerana liputan semua kegunaan fungsi sebaris akan ditunjukkan
untuk baris sumber yang sama, pengiraan baris itu sendiri mungkin kelihatan tidak konsisten.

Aplikasi yang berjalan lama boleh menggunakan kemudahan "_gcov_reset" dan "_gcov_dump" untuk
mengehadkan pengumpulan profil ke kawasan program yang diminati. Memanggil "_gcov_reset(void)"
akan mengosongkan semua pembilang profil kepada sifar dan memanggil "_gcov_dump(void)" akan menyebabkan
maklumat profil yang dikumpul pada ketika itu untuk dibuang ke .gcda fail keluaran.

Gunakan sh4-linux-gnu-gcov dalam talian menggunakan perkhidmatan onworks.net



Program dalam talian Linux & Windows terkini