← man/dev_and_programming
gcov — man gcov — 80×24
ugur@toprak:~/man/dev_and_programming$man gcov
Bölüm 1 Geliştirme & Programlama

gcov

kapsam bilgisi üretir

Sözdizimi

       llvm-cov command [args...]

Açıklama

llvm-cov aracı, profil verisi üretmek üzere donatılmış programlar için kod kapsamı bilgisini gösterir. gcov tarzı kod kapsamı ile veya clang'in kod donatma tabanlı profillemesi ile çalışmak için kullanılabilir.

Eğer program gcov temel adıyla çağrılırsa, llvm-cov gcov komutu çağrılmış gibi davranır. Aksi takdirde, bir komut belirtilmelidir.

Komutlar

• gcov

• show

• report

• export

Gcov Komutu

SÖZDİZİMİ llvm-cov gcov [seçenekler] SOURCEFILE

AÇIKLAMA llvm-cov gcov aracı, kod kapsamı veri dosyalarını okur ve belirtilen bir kaynak dosyası için kapsam bilgisini görüntüler. GCC'nin 4.2 sürümündeki gcov aracıyla uyumludur ve gcov'un bazı daha sonraki sürümleriyle de uyumlu olabilir.

llvm-cov gcov kullanmak için, öncelikle uygulamanızın çalışırken kapsam verisi toplayan donatılmış bir sürümünü derlemelisiniz. Donatmayı eklemek için uygulamayı -fprofile-arcs ve -ftest-coverage seçenekleriyle derleyin. (Alternatif olarak, bu diğer iki seçeneğin her ikisini de içeren --coverage seçeneğini kullanabilirsiniz.)

Donatılmış kodu derlediğiniz anda, her nesne dosyası için bir .gcno veri dosyası oluşturulacaktır. Bu .gcno dosyaları, kapsam verilerinin yarısını içerir. Verilerin diğer yarısı ise donatılmış programı çalıştırdığınızda oluşturulan .gcda dosyalarından gelir; her bir nesne dosyası için ayrı bir .gcda dosyası bulunur. Programı her çalıştırdığınızda, yürütme sayıları mevcut .gcda dosyalarında toplanır, bu nedenle içeriklerinin dahil edilmesini istemiyorsanız eski dosyaları sildiğinizden emin olun.

Varsayılan olarak, .gcda dosyaları nesne dosyalarıyla aynı dizine yazılır, ancak GCOV_PREFIX ve GCOV_PREFIX_STRIP ortam değişkenlerini ayarlayarak bunu geçersiz kılabilirsiniz. GCOV_PREFIX_STRIP değişkeni, nesne dosyası dizininin mutlak yolunun başlangıcından kaldırılacak dizin bileşenlerinin sayısını belirtir. Bu dizinler kaldırıldıktan sonra, GCOV_PREFIX değişkeninden gelen önek eklenir. Bu ortam değişkenleri, donatılmış programı orijinal nesne dosyası dizinlerine erişilemeyen bir makinede çalıştırmanıza olanak tanır; ancak daha sonra .gcda dosyalarını, llvm-cov gcov aracının onları bulmayı beklediği nesne dosyası dizinlerine geri kopyalamanız gerekecektir.

Kapsam veri dosyalarını oluşturduktan sonra, kapsam sonuçlarını incelemek istediğiniz her bir ana kaynak dosyası için llvm-cov gcov aracını çalıştırın. Bu işlem, daha önce derleyiciyi çalıştırdığınız dizinden yürütülmelidir. Belirtilen kaynak dosyasının sonuçları, sonuna bir .gcov uzantısı eklenerek adlandırılan bir dosyaya yazılır. Ana kaynak dosyası tarafından dahil edilen her dosya için de sonuna .gcov uzantısı eklenmiş ayrı bir çıktı dosyası oluşturulur.

Bir .gcov çıktı dosyasının temel içeriği, her satırın başına bir yürütme sayısı ve satır numarası eklenmiş kaynak dosyasının bir kopyasıdır. Eğer bir satır yürütülebilir herhangi bir kod içermiyorsa, yürütme sayısı - olarak gösterilir. Bir satır kod içeriyor ancak bu kod hiç yürütülmemişse, sayı ##### olarak görüntülenir.

SEÇENEKLER

-a, --all-blocks Tüm temel blokları görüntüler. Tek bir kaynak kodu satırı için birden fazla blok varsa, bu seçenek llvm-cov'un tüm satır için tek bir sayı göstermek yerine her bir blok için sayıyı göstermesini sağlar.

-b, --branch-probabilities Koşullu dal olasılıklarını ve dal bilgilerinin bir özetini görüntüler.

-c, --branch-counts Olasılıklar yerine dal sayılarını görüntüler (-b seçeneğini gerektirir).

-m, --demangled-names Fonksiyon adlarını özgün biçimlerine dönüştürür (demangle).

-f, --function-summaries Tüm kaynak dosyası için tek bir özet göstermek yerine, her bir fonksiyon için kapsam özeti gösterir.

--help Kullanılabilir seçenekleri görüntüler (daha fazlası için --help-hidden).

-l, --long-file-names Ana kaynak dosyadan dahil edilen dosyaların kapsam çıktısı için, çıktı dosyası adlarının önüne bir önek olarak ana dosya adını ve ardından ## karakterlerini ekler. Hem ana dosya hem de dahil edilen dosya için tam yolları kullanmak amacıyla bu seçenek --preserve-paths seçeneğiyle birleştirilebilir.

-n, --no-output Herhangi bir .gcov dosyası çıktısı üretmez. Özet bilgiler yine de görüntülenir.

-o <DİZİN|DOSYA>, --object-directory=<DİZİN>, --object-file= Nesneleri DİZİN içinde veya DOSYA'nın yoluna göre bulur. Belirli bir nesne dosyası belirtirseniz, kapsam veri dosyalarının .gcno ve .gcda uzantılarıyla aynı temel ada sahip olması beklenir. Bir dizin belirtirseniz, dosyaların o dizinde kaynak dosyayla aynı temel ada sahip olması beklenir.

-p, --preserve-paths Kapsam çıktı dosyalarını adlandırırken yol bileşenlerini korur. Kaynak dosya adına ek olarak, o dosyaya giden yoldaki dizinleri de dahil eder. Dizinler # karakterleriyle ayrılır, . dizinleri kaldırılır ve .. dizinleri ^ karakterleriyle değiştirilir. --long-file-names seçeneğiyle birlikte kullanıldığında bu kural, hem ana dosya adına hem de dahil edilen dosya adına uygulanır.

  • -r: Sadece göreceli (relative) yollara veya -s ile belirtilen öneke sahip mutlak yollara sahip dosyaları döker.

-s Kaldırılacak kaynak öneki.

-t, --stdout Standart çıktıya (stdout) yazdırır, .gcov dosyaları üretmez.

-u, --unconditional-branches --branch-probabilities seçeneğinin çıktısına koşulsuz dalları da dahil eder.

-version llvm-cov sürümünü görüntüler.

-x, --hash-filenames Kapsam çıktı dosyalarını adlandırırken dosya adının MD5 karmasını (hash) kullanır. Kaynak dosya adının sonuna ## eklenir ve ardından onun için hesaplanan MD5 karması gelir.

ÇIKIŞ DURUMU llvm-cov gcov, girdi dosyalarını okuyamazsa 1 değerini döndürür. Aksi takdirde, sıfır ile çıkar.

Show Komutu

SÖZDİZİMİ llvm-cov show [seçenekler] -instr-profile PROFILE [BIN] [-object BIN]... [-sources] [SOURCE]...

AÇIKLAMA llvm-cov show komutu, PROFILE profil verisini kullanarak BIN... ikili dosyalarının (binary) satır satır kapsamını gösterir. İsteğe bağlı olarak, yalnızca SOURCE... içinde listelenen dosyaların kapsamını gösterecek şekilde filtrelenebilir.

BIN; bir yürütülebilir dosya, nesne dosyası, dinamik kütüphane veya arşiv (ince (thin) veya başka şekilde) olabilir.

llvm-cov show komutunu kullanmak için, profil ve kapsam verisi üretmek amacıyla kod donatımıyla derlenmiş bir programa ihtiyacınız vardır. Böyle bir programı clang ile derlemek için -fprofile-instr-generate and -fcoverage-mapping bayraklarını kullanın. Eğer clang sürücüsüyle (driver) bağlama (link) yapıyorsanız, gerekli çalışma zamanı kütüphanelerinin bağlandığından emin olmak için bağlama aşamasına -fprofile-instr-generate parametresini geçirin.

Kapsam bilgisi derlenen yürütülebilir dosyanın veya kütüphanenin kendisinde saklanır ve llvm-cov show komutuna BIN argümanı olarak geçirmeniz gereken şey de budur. Profil verisi, bu donatılmış programın normal şekilde çalıştırılmasıyla oluşturulur. Program sonlandığında, genellikle default.profraw olarak adlandırılan ham bir profil dosyası yazar; bu dosya, llvm-profdata merge aracı kullanılarak PROFILE argümanı için uygun bir formata dönüştürülebilir.

SEÇENEKLER

-show-branches=<GÖRÜNÜM> Dal koşulları için kapsamı sayı veya yüzde cinsinden gösterir. Desteklenen görünümler: "count", "percent".

-show-mcdc Geçerli her boolean ifadesi için değiştirilmiş koşul/karar kapsamını (MC/DC) gösterir.

-show-line-counts Her satır için yürütme sayılarını gösterir. Başka bir -show seçeneği kullanılmadığı sürece varsayılan olarak true değerini alır.

-show-expansions Önişlemci makroları veya metinsel dahil etmeler gibi dahil etmeleri kaynak dosyasının gösteriminde satır içi (inline) olarak genişletir. Varsayılan olarak false değerini alır.

-show-instantiations C++'taki şablonlar (templates) gibi birden çok kez somutlaştırılan (instantiated) kaynak bölgeleri için, birleşik özetin yanı sıra her bir somutlaştırmayı ayrı ayrı gösterir. Varsayılan olarak true değerini alır.

-show-regions Bölgenin başladığı karaktere işaret eden bir düzeltme işareti (caret - ^) görüntüleyerek her bölge için yürütme sayılarını gösterir. Varsayılan olarak false değerini alır.

-show-line-counts-or-regions Satırda yalnızca tek bir bölge varsa her satır için yürütme sayılarını gösterir, ancak satırda birden fazla bölge varsa tekil bölgeleri gösterir. Varsayılan olarak false değerini alır.

-show-directory-coverage En az bir kaynak dosyası içeren her dizinde, toplamları gösteren üst düzey bir dizin ile bir indeks dosyası oluşturur. Varsayılan olarak false değerini alır.

-use-color Renkli çıktıyı etkinleştirir veya devre dışı bırakır. Varsayılan olarak bu durum otomatik olarak algılanır.

-arch=[ADLAR] Listedeki N. girdinin belirtilen N. ikili dosyaya karşılık geleceği şekilde bir mimari listesi belirtir. Kapsanan nesne bir evrensel ikili dosya (universal binary) ise, bu seçenek kullanılacak mimariyi belirtir. Evrensel ikili dosyaya dahil edilmeyen bir mimari belirtmek veya evrensel olmayan bir ikili dosyayla eşleşmeyen bir mimari kullanmak hataya neden olur.

-name= Yalnızca belirtilen ada sahip fonksiyonlar için kod kapsamını gösterir.

-name-allowlist= Yalnızca verilen dosyada listelenen fonksiyonlar için kod kapsamını gösterir. Dosyadaki her satır allowlist_fun: ile başlamalı ve hemen ardından kabul edilecek fonksiyonun adı gelmelidir. Bu ad bir joker karakter (wildcard) ifadesi olabilir.

-name-regex= Yalnızca verilen düzenli ifadeyle (regular expression) eşleşen fonksiyonlar için kod kapsamını gösterir.

-ignore-filename-regex= Dosya yolları verilen düzenli ifadeyle eşleşen kaynak kodu dosyalarını atlar.

-format=<BİÇİM> Belirtilen çıktı biçimini kullanır. Desteklenen biçimler: "text", "html".

-tab-size= Raporları hazırlarken sekmeleri kadar boşlukla değiştirir. Şu anda bu seçenek yalnızca html biçimi için desteklenmektedir.

-output-dir=YOL Kapsam raporlarının yazılacağı dizini belirtir. Dizin mevcut değilse oluşturulur. Fonksiyon görünümü modunda kullanıldığında (yani belirli fonksiyonları seçmek için -name veya -name-regex kullanıldığında), rapor PATH/functions.EXTENSION konumuna yazılır. Dosya görünümü modunda kullanıldığında, her dosya için bir rapor PATH/REL_PATH_TO_FILE.EXTENSION konumuna yazılır.

-Xdemangler=<ARAÇ>|<ARAÇ-SEÇENEĞİ> Bir sembol anlamlandırıcı (demangler) belirtir. Bu seçenek, raporları daha insan tarafından okunabilir hale getirmek için kullanılabilir. Anlamlandırıcıya argümanlar sağlamak için bu seçenek birden fazla kez belirtilebilir (örneğin

  • -Xdemangler c++filt -Xdemangler -n C++ için).: Anlamlandırıcının stdin'den yeni satırla ayrılmış bir sembol listesi okuması ve stdout'a aynı uzunlukta yeni satırla ayrılmış bir liste yazması beklenir.

-num-threads=N, -j=N Dosya raporlarını yazmak için N adet iş parçacığı (thread) kullanır (yalnızca -output-dir belirtildiğinde geçerlidir). N=0 olduğunda, llvm-cov kullanılacak uygun iş parçacığı sayısını otomatik olarak algılar. Varsayılan değer budur.

-compilation-dir= Göreceli kapsam eşleme yolları için temel olarak kullanılan dizin. Yalnızca ikili dosyalar -fcoverage-prefix-map, -fcoverage-compilation-dir veya -ffile-compilation-dir seçeneklerinden biriyle derlendiğinde geçerlidir.

-line-coverage-gt= Yalnızca satır kapsamı verilen eşikten büyük olan fonksiyonlar için kod kapsamını gösterir.

-line-coverage-lt= Yalnızca satır kapsamı verilen eşikten küçük olan fonksiyonlar için kod kapsamını gösterir.

-region-coverage-gt= Yalnızca bölge kapsamı verilen eşikten büyük olan fonksiyonlar için kod kapsamını gösterir.

-region-coverage-lt= Yalnızca bölge kapsamı verilen eşikten küçük olan fonksiyonlar için kod kapsamını gösterir.

-path-equivalence=, Kapsam verilerindeki yolları yerel kaynak dosya yollarına eşler. Bu durum, kapsam verilerini bir makinede oluşturmanıza ve ardından aynı dosyalara farklı bir yolda sahip olduğunuz farklı bir makinede llvm-cov kullanmanıza olanak tanır. Farklı eşlemeler belirtmek için birden fazla -path-equivalence argümanı geçirilebilir. Her argüman bir yolundan ve buna karşılık gelen yerel yolundan oluşur. Eşlemeler belirtildikleri sırayla uygulanır. Tek bir yola birden fazla eşleme uygulanabiliyorsa, karşılaşılan ilk eşleme kullanılır.

-coverage-watermark=<yüksek>,<düşük> html biçimindeki çıktıda kapsam için yüksek ve düşük eşik değerlerini (watermark) ayarlar. Bu durum, kapsamın yüksek ve düşük eşik değerlerini istediğiniz gibi ayarlamanıza olanak tanır; kapsam >= yüksek olduğunda yeşil, kapsam < düşük olduğunda kırmızı ve aksi takdirde sarı olur. Hem yüksek hem de düşük değerler 0-100 arasında olmalı ve yüksek > düşük olmalıdır.

-debuginfod Profilde bulunan ancak komut satırında verilen herhangi bir nesnede bulunmayan ikili dosya kimlikleri (binary ID) için kapsam eşlemesini aramak üzere debuginfod kullanır. debuginfod derlenmişse ve DEBUGINFOD_URLS ortam değişkeni aracılığıyla yapılandırılmışsa varsayılan olarak true değerini alır.

-debug-file-directory= Profildeki ikili dosya kimliklerine karşılık gelen nesneleri aramak için yerel dizinler sağlar (debuginfod ile olduğu gibi). Varsayılan olarak sistem derleme kimliği (build ID) dizinlerini kullanır.

-check-binary-ids Profilde bulunan bir ikili dosya kimliği için ne komut satırında ne de ikili dosya kimliği araması yoluyla bir nesne dosyası bulunamazsa başarısız olur.

-empty-profile Yürütme sayıları tamamen sıfır olan ikili dosyaların temel kapsamını görüntüler. -instr-profile ile karşılıklı olarak özeldir (bir arada kullanılamaz).

Report Komutu

SÖZDİZİMİ llvm-cov report [seçenekler] -instr-profile PROFILE [BIN] [-object BIN]... [-sources] [SOURCE]...

AÇIKLAMA llvm-cov report komutu, PROFILE profil verisini kullanarak BIN... ikili dosyalarının kapsamının bir özetini görüntüler. İsteğe bağlı olarak, yalnızca SOURCE... içinde listelenen dosyaların kapsamını gösterecek şekilde filtrelenebilir.

BIN; bir yürütülebilir dosya, nesne dosyası, dinamik kütüphane veya arşiv (ince (thin) veya başka şekilde) olabilir.

Hiçbir kaynak dosyası sağlanmazsa, kapsam verilerindeki her dosya için bir özet satırı yazdırılır. Herhangi bir dosya sağlanırsa ve -show-functions seçeneği etkinse, listelenen dosyalardaki her bir fonksiyon için özetler gösterilebilir.

Kapsam belirleme amacıyla programları derleme ve profil verisi oluşturma hakkında bilgi için bkz. SHOW KOMUTU.

SEÇENEKLER

-use-color[=DEĞER] Renkli çıktıyı etkinleştirir veya devre dışı bırakır. Varsayılan olarak bu durum otomatik olarak algılanır.

-arch= Kapsanan ikili dosya bir evrensel ikili dosya ise, kullanılacak mimariyi seçer. Evrensel ikili dosyaya dahil edilmeyen bir mimari belirtmek veya evrensel olmayan bir ikili dosyayla eşleşmeyen bir mimari kullanmak hataya neden olur.

-show-region-summary Tüm bölgeler için istatistikleri gösterir. Varsayılan olarak true değerini alır.

-show-branch-summary Tüm dal koşulları için istatistikleri gösterir. Varsayılan olarak true değerini alır.

-show-mcdc-summary MC/DC istatistiklerini gösterir. Varsayılan olarak false değerini alır.

-show-functions Her bir fonksiyon için kapsam özetlerini gösterir. Varsayılan olarak false değerini alır.

-show-instantiation-summary Tüm fonksiyon somutlaştırmaları için istatistikleri gösterir. Varsayılan olarak false değerini alır.

-ignore-filename-regex= Dosya yolları verilen düzenli ifadeyle eşleşen kaynak kodu dosyalarını atlar.

-compilation-dir= Göreceli kapsam eşleme yolları için temel olarak kullanılan dizin. Yalnızca ikili dosyalar -fcoverage-prefix-map, -fcoverage-compilation-dir veya -ffile-compilation-dir seçeneklerinden biriyle derlendiğinde geçerlidir.

-debuginfod debuginfod kullanarak nesnelerden kapsam eşlemesini aramaya çalışır. debuginfod derlenmişse ve DEBUGINFOD_URLS ortam değişkeni aracılığıyla yapılandırılmışsa, bu işlem profilde bulunan ancak komut satırında sağlanmayan ikili dosya kimlikleri için varsayılan olarak denenir.

-debug-file-directory= Profildeki ikili dosya kimliklerine karşılık gelen nesneleri aramak için bir dizin sağlar.

-check-binary-ids Profilde bulunan bir ikili dosya kimliği için ne komut satırında ne de ikili dosya kimliği araması yoluyla bir nesne dosyası bulunamazsa başarısız olur.

-empty-profile Yürütme sayıları tamamen sıfır olan ikili dosyaların temel kapsamını görüntüler. -instr-profile ile karşılıklı olarak özeldir (bir arada kullanılamaz).

Export Komutu

SÖZDİZİMİ llvm-cov export [seçenekler] -instr-profile PROFILE [BIN] [-object BIN]... [-sources] [SOURCE]...

AÇIKLAMA llvm-cov export komutu, PROFILE profil verisini kullanarak BIN... ikili dosyalarının kapsam verilerini JSON veya lcov izleme dosyası (trace file) biçiminde dışa aktarır.

JSON dışa aktarılırken, kapsam verilerinin bölgeleri, fonksiyonları, dalları, genişletmeleri ve özetleri dışa aktarılacaktır. Bir lcov izleme dosyası dışa aktarılırken ise satır tabanlı kapsam, dal kapsamı ve özetler dışa aktarılacaktır.

Dışa aktarılan veriler, yalnızca SOURCE... içinde listelenen dosyaların kapsamını dışa aktaracak şekilde isteğe bağlı olarak filtrelenebilir.

Kapsam belirleme amacıyla programları derleme ve profil verisi oluşturma hakkında bilgi için bkz. SHOW KOMUTU.

SEÇENEKLER

-arch= Kapsanan ikili dosya bir evrensel ikili dosya ise, kullanılacak mimariyi seçer. Evrensel ikili dosyaya dahil edilmeyen bir mimari belirtmek veya evrensel olmayan bir ikili dosyayla eşleşmeyen bir mimari kullanmak hataya neden olur.

-format=<BİÇİM> Belirtilen çıktı biçimini kullanır. Desteklenen biçimler: "text" (JSON), "lcov".

-summary-only Kapsam verilerindeki her dosya için yalnızca özet bilgilerini dışa aktarır. Bu mod, tekil fonksiyonlar veya bölgeler gibi daha küçük birimler için kapsam bilgilerini dışa aktarmaz. Sonuç, llvm-cov report komutu tarafından üretilen bilgilerin aynısını içerecektir, ancak metin yerine JSON veya lcov biçiminde sunulacaktır.

-ignore-filename-regex= Dosya yolları verilen düzenli ifadeyle eşleşen kaynak kodu dosyalarını atlar.

-skip-expansions Makro genişletme kapsam verilerinin dışa aktarılmasını atlar.

-skip-functions Fonksiyon başına kapsam verilerinin dışa aktarılmasını atlar.

-num-threads=N, -j=N Kapsam verilerini dışa aktarmak için N adet iş parçacığı kullanır. N=0 olduğunda, llvm-cov kullanılacak uygun iş parçacığı sayısını otomatik olarak algılar. Varsayılan değer budur.

-compilation-dir= Göreceli kapsam eşleme yolları için temel olarak kullanılan dizin. Yalnızca ikili dosyalar -fcoverage-prefix-map, -fcoverage-compilation-dir veya -ffile-compilation-dir seçeneklerinden biriyle derlendiğinde geçerlidir.

-debuginfod debuginfod kullanarak nesnelerden kapsam eşlemesini aramaya çalışır. debuginfod derlenmişse ve DEBUGINFOD_URLS ortam değişkeni aracılığıyla yapılandırılmışsa, bu işlem profilde bulunan ancak komut satırında sağlanmayan ikili dosya kimlikleri için varsayılan olarak denenir.

-debug-file-directory= Profildeki ikili dosya kimliklerine karşılık gelen nesneleri aramak için bir dizin sağlar.

-check-binary-ids Profilde bulunan bir ikili dosya kimliği için ne komut satırında ne de ikili dosya kimliği araması yoluyla bir nesne dosyası bulunamazsa başarısız olur.

-empty-profile Yürütme sayıları tamamen sıfır olan ikili dosyaların temel kapsamını dışa aktarır. -instr-profile ile karşılıklı olarak özeldir (bir arada kullanılamaz).

Convert-For-Testing Komutu

UYARI: Bu komut yalnızca llvm-cov üzerinde çalışan LLVM geliştiricileri içindir.

SÖZDİZİMİ llvm-cov convert-for-testing BIN -o OUT

AÇIKLAMA llvm-cov convert-for-testing komutu, llvm-cov'un kendisini test etme amacına hizmet eder. BIN ikili dosyasından tüm kod kapsamı verilerini OUT dosyasına çıkarabilir, böylece test dosyalarının boyutunu azaltır. Çıktı dosyası genellikle .covmapping uzantısını taşır.

.covmapping dosyaları, tıpkı sıradan ikili dosyalar gibi llvm-cov tarafından geri okunabilir.

Yazar

LLVM Team (https://llvm.org/) tarafından sürdürülmektedir.

Telif Hakkı

2003-2026, LLVM Project

11 2026-02-13 LLVM-COV(1)