問題タブ [gcovr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - GCOV がこの行がカバーされていないと主張するのはなぜですか?
最近、gcc/g++/gcov の新しいバージョンにアップグレードしたところ、gcov の動作がおかしくなりました。新しいバージョンでは、古いバージョンではカバーされていると見なされていた一部のコード行がカバーされていないと主張しています。コードをこの最小限の例に減らすことができました。
次に、 を使用してこのファイルをコンパイルしg++ -O0 -Wall -Wextra -Werror --std=c++17 --coverage
、結果を実行してからa.out
を実行しますgcov
。
結果の.gcov
ファイルには次が含まれます。
これは、行 6 が 2 回ヒットしたと主張する古いバージョンの gcov とは異なります。
gcov が 6 行目がカバーされていないと考えるのはなぜですか? 私は何か間違ったことをしていますか?
gcc8、gcc9、および gcc10 でこの動作を再現できます。gcc7 は期待どおりに動作します。
gcc7/8 を比較するコンパイラ エクスプローラ: https://godbolt.org/z/Te57s4WK8