【问题标题】:How to set flags of g++ using cmake such that gprof can demangle?如何使用 cmake 设置 g++ 的标志,以便 gprof 可以解散?
【发布时间】:2014-05-09 08:43:27
【问题描述】:

如何在 CMakeLists.txt 中为 GNU g++ 的编译器和链接器设置 gprof 标志?

我目前的做法,

set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -pg")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -pg")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} -pg")

不允许 gprof 对 C++ 函数进行分解。有任何想法吗? (我使用的是 C++11)

【问题讨论】:

  • 破解函数所需的只是函数名本身,您不能添加额外的 g++ 标志来帮助 AFAIK。

标签: g++ cmake gprof demangler


【解决方案1】:

尝试使用:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")

编译链接必须加flags,执行程序后使用:

gprof ./my_exe

如果您收到如下错误:

gmon.out: No such file or directory

这意味着编译没有正确添加分析信息。

这里的一系列事件应该如下工作:

1º Compile code with -pg option
2º Link code with -pg option
3º Run program
4º Program generates gmon.out file
5º Run gprof

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2015-12-09
    • 2012-04-17
    • 2010-10-16
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多