gprof没有显示调用图

时间:2013-02-01 03:38:32

标签: profiling gprof

我正在使用-pg选项运行我的程序。当我打开输出gmon.out时,它只是累积列表而不是调用图形。我该如何解决这个问题?

我知道此前有人问过这个问题:gprof - File is missing call-graph data但实际上没有人回答这个问题,只提出了替代gprof的建议。

1 个答案:

答案 0 :(得分:1)

我也有寻找答案的令人失望的经历。

具体来说:以下对我有帮助(最新的Ubuntu 2013年5月)。同时尝试-fno-reorder-functions-fno-inline。例如,在cmake下,这有效:

if(CMAKE_COMPILER_IS_GNUCXX)
  add_definitions(${CMAKE_CXX_FLAGS} "-Ofast")
  add_definitions(${CMAKE_CXX_FLAGS} "-fno-reorder-functions")
  add_definitions(${CMAKE_CXX_FLAGS} "-fno-inline")
endif()

通常:尝试查看编译器优化文档。找到有效的优化级别,然后为下一级别添加所有列出的选项。尝试添加和删除,例如,二分。再一次,在cmake中有类似的东西:

  add_definitions(${CMAKE_CXX_FLAGS} "-O1")
  add_definitions(${CMAKE_CXX_FLAGS} "-fthread-jumps")
  add_definitions(${CMAKE_CXX_FLAGS} "-falign-functions  -falign-jumps")
  add_definitions(${CMAKE_CXX_FLAGS} "-falign-loops  -falign-labels")
  # add_definitions(${CMAKE_CXX_FLAGS} "-fcaller-saves")
  # add_definitions(${CMAKE_CXX_FLAGS} "-fcrossjumping")
  # add_definitions(${CMAKE_CXX_FLAGS} "-fcse-follow-jumps  -fcse-skip-blocks")
  # add_definitions(${CMAKE_CXX_FLAGS} "-fdelete-null-pointer-checks")

可能有一两个优化选项导致所有问题。