Clang有一些与覆盖率样式分析相关的选项。命令行引用并没有真正说明它们中的任何一个是做什么的:
--coverage
-fprofile-arcs
-fprofile-instr-generate
-ftest-coverage
-fcoverage-mapping根据llvm cov文档的说法,--coverage支持-fprofile-arcs和-ftest-coverage,甚至更多。
两个-fprofile-..标志都以某种方式添加了一些工具来记录执行计数,但它们做的事情完全一样吗?如果是的话,为什么两者兼而有之?
llvm cov文档说,-fprofile-arcs与llvm-cov gcov一起使用,-fprofile-instr-generate与llvm-cov show一起使用。为什么?这里发生什么事情?
-fcoverage-mapping和-ftest-coverage到底做了什么?
发布于 2018-01-31 12:41:51
我开始阅读代码,据我所知:
--coverage支持-ftest-coverage、-fprofile-arcs,并在Linux上添加-u__llvm_runtime_variable,或者类似的东西。
-fprofile-arcs和-fprofile-instr-generate是不同的。前者添加-femit-coverage-data,后者添加-fprofile-instrument=clang (其他选项为"none“或"llvm")。
-ftest-coverage添加-femit-coverage-notes
-fcoverage-mapping添加-fcoverage-mapping
然后,这些选项具有以下效果:
-ftest-coverage:“不要运行GCov通行证,用于测试。” (那是.(令人困惑)-femit-coverage-data:创建一个GCDA文件。-femit-coverage-notes:创建一个GCNO文件。-fprofile-instrument=clang:以下选项之一ProfileNone, // Profile instrumentation is turned off.
ProfileClangInstr, // Clang instrumentation to generate execution counts
// to use with PGO.
ProfileIRInstr, // IR level PGO instrumentation in LLVM.因此,这回答了一些问题,但似乎确实有两种完全不同的剖析系统,我不确定它们之间的区别。
https://stackoverflow.com/questions/48540859
复制相似问题