问题
1/当我希望使用output编译器进行分析时,我希望得到什么clang?
2/如何对使用profiling作为编译器的C++ project进行and as `作为构建工具?
重新定级我所用的
1首先,我使用了valgrind工具来检查cpp executable的性能。
2之后,我使用了g++ compiler,并通过了这,在这里我看到了使用gprof执行分析的步骤。使用gprof的东西我已经通过命令行完成了。从这个来源我了解到,gprof可以提供一个文本文件的输出(称为analysis.txt),其中编写函数调用号、执行时间等。
到目前为止我的目标和方法
clang编译器和CMake构建工具。我读过clang文档,主要是这个和这。cpp file放在同一个目录中(显然不是所需的项目结构),并遵循以下命令来查看如何实现和outcome即将到来clang++-10 -fprofile-instr-generate -fcoverage-mapping test_gprof.cpp test_gprof_new.cpp -o code_coverage
LLVM_PROFILE_FILE="code_coverage.profraw" ./code_coverage
llvm-profdata merge -sparse code_coverage.profraw -o code_coverage.profdata
llvm-cov show -show-line-counts-or-regions --show-regions=1 --show-expansions ./code_coverage -instr-profile=code_coverage.profdata
llvm-cov report ./code_coverage -instr-profile=code_coverage.profdata我真的不确定我是否遵循了正确的步骤,但我希望看到一些analysis统计数据。
report,我对它一无所知。在这里,我的第一个问题是,当我做profiling的时候,我能期待什么?CMake中激活clang编译器的这个分析过程。下面给出了一个虚拟文件夹结构,类似于真实的文件夹结构。clang_profile_cmake/
├── CMakeLists.txt
├── example
│ └── main.cpp
├── include
│ ├── test_gprof.h
│ └── test_gprof_new.h
├── README.md
└── src
├── test_gprof.cpp
└── test_gprof_new.cpp最近的搜索(仍然无法通过CMake、Clang编译器生成任何分析数据)
-fprofile-instr-generate -fcoverage-mapping、LLVM_PROFILE_FILE、llvm-profdata merge .等)发布于 2022-10-05 13:01:05
我发现,我必须更多地学习如何处理CMake,因为总答案就在我面前,现在我刚刚在CMake中添加了这些命令。
clang++-10 -fprofile-instr-generate -fcoverage-mapping test_gprof.cpp test_gprof_new.cpp -o code_coverage
下面是当前的CMake文件
# Set Clang Compiler
set(CMAKE_CXX_COMPILER "/usr/bin/clang++-10")
set(CMAKE_CXX_COMPILER clang++-10)
# Set llvm clang instrumentation compile flags
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
# Project name
project(clang_profiling_cmake)
# Next will be filled with common CMake Pattern要构建或查看分析步骤,可以使用以下脚本。在我的例子中,我将输出可执行文件名设置为clang_prof_exec。
rm -rf bin/ build/ lib/
mkdir build
cd build
cmake ..
make
cd ../bin
# creation of profraw file by executing the executable binary
LLVM_PROFILE_FILE="clang_prof_exec.profraw" ./clang_prof_exec
# Creation of profile data
llvm-profdata merge -sparse clang_prof_exec.profraw -o clang_prof_exec.profdata
# following commands are needed to investigate profiling output. Use any of these
llvm-cov show ./clang_prof_exec -instr-profile=clang_prof_exec.profdata
llvm-cov report ./clang_prof_exec -instr-profile=clang_prof_exec.profdatahttps://stackoverflow.com/questions/73922182
复制相似问题