Home / C/C++ / How does GCOV work?

How does GCOV work?

GCOV sử dụng hai tệp để phân tích. Tên của các tệp này được bắt nguồn từ tệp gốc object bằng cách thay thế phần hậu tố của tệp bằng .gcno hoặc .gcda. Các tệp chứa dữ liệu coverage và profile được lưu trữ ở định dạng platform-independent. Các tệp .gcno được đặt trong cùng một thư mục với tệp đối tượng. Theo mặc định, các tệp .gcda cũng được lưu trữ trong cùng một thư mục với tệp đối tượng, nhưng tùy chọn GCC -fprofile-dir có thể được sử dụng để lưu trữ các tệp .gcda trong một thư mục riêng biệt.

Tệp ghi chú .gcno được tạo khi tệp nguồn được biên dịch với tùy chọn GCC -ftest-coverage. Nó chứa thông tin để tái tạo đồ thị khối cơ bản và gán số dòng nguồn cho các khối.

Tệp dữ liệu đếm .gcda được tạo khi một chương trình chứa các tệp đối tượng được built với tùy chọn GCC -fprofile-arcs được thực thi. Một tệp .gcda riêng biệt được tạo cho mỗi tệp đối tượng được biên dịch với tùy chọn này. Nó chứa số lần chuyển đổi cung, số lần đếm giá trị và một số thông tin tổng quan.

Mô tả đầy đủ về định dạng tệp được chỉ định trong gcov-io.h, và các hàm được cung cấp trong header file này nên được sử dụng để truy cập các tệp coverage .

EXAMPLE:

  • Build my program
    >> g++ -ftest-coverage -fprofile-arcs main.cpp -o main.out
    [ RESULT ] File main.gcno generated
  • Execute file main.out with arg1 = 5
    >> ./main.out -c1 5
    [ RESULT ] File main.gcda generated.
  • Check coverage
    >> gcov ./main.out
    [ RESULT ] File main.cpp.gcov generated.

    File ‘main.cpp’
    Lines executed:82.35% of 17
    Creating ‘main.cpp.gcov’

    File ‘/usr/include/c++/7/iostream’
    Lines executed:100.00% of 1
    Creating ‘iostream.gcov’

  • Execute file main.out with arg2 = 10 to improve coverage
    >> ./main.out -c2 10
    [ RESULT ] File main.gcda updated.
  • Check coverage again
    >> gcov ./main.out
    [ RESULT ] File main.cpp.gcov updated.

    File ‘main.cpp’
    Lines executed:100.00% of 17
    Creating ‘main.cpp.gcov’

    File ‘/usr/include/c++/7/iostream’
    Lines executed:100.00% of 1
    Creating ‘iostream.gcov’

__FreeSourceC.com__

About admin

Check Also

[ SC Tutorial ] 3. SystemC Data types

SystemC có một số kiểu dữ liệu được xác định trước để hỗ trợ các …

Leave a Reply

Your email address will not be published. Required fields are marked *