如何使用gprof与cmake

时间:2014-10-21 16:45:37

标签: cmake profiling gprof dreal

我已经看过几十个用gprof进行性能分析的教程。我正在尝试使用SMT求解器dReal的代码。为了构建程序,我首先安装了g ++ - 4.8,Bison,Flex和Cmake。然后构建dReal,说明执行以下操作:

git clone git@github.com:soonhokong/dReal.git dreal  
cd dreal  
mkdir -p build/release  
cd build/release  
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_C_COMPILER=gcc-4.8 ../../src  
make

我在这里应该添加-pg?我是编程新手,因此非常感谢推理而不是答案。我知道你应该将-pg添加到编译阶段,但是所有的教程都说要把它放在g ++或gcc之后。我无法找到如何修改cmake的代码。我确实尝试将构建类型更改为PROFILE,但这并没有帮助。

2 个答案:

答案 0 :(得分:7)

要使用gprof,您需要使用-pg选项进行编译和链接。

CMakeLists.txt应该有像Ami Tavory所提到的设置,其中命令行选项与硬编码选项相结合,因此使用精心构建的cmake项目执行此操作的好方法是:

cmake -DCMAKE_CXX_FLAGS=-pg -DCMAKE_EXE_LINKER_FLAGS=-pg -DCMAKE_SHARED_LINKER_FLAGS=-pg <SOURCE_DIR>

答案 1 :(得分:6)

我是Soonho Kong,是dReal的维护者之一。如果你把&#34; dreal&#34;那么我们就更容易回答有关dReal的问题。标签上的问题。

  1. 通常,您可以通过运行以下命令将-pg等编译器标志传递给cmake:

    cmake -DCMAKE_CXX_FLAGS = -pg

  2. 对于分析,我通常使用valgrind + callgrind

  3. 为了衡量代码覆盖率,我们使用的是gcov和lcov工具。您可能需要查看how we set up the compiler flags,这可以帮助您为gprof设置自己的编译器标志。