1
我正在使用-pg選項運行我的程序。當我打開輸出gmon.out它只是累積列表而不是調用圖表。我如何解決這個問題?gprof不顯示調用圖
我知道這是在這之前問:gprof - File is missing call-graph data但沒有人真正回答這個問題,只給了gprof的替代建議。
我正在使用-pg選項運行我的程序。當我打開輸出gmon.out它只是累積列表而不是調用圖表。我如何解決這個問題?gprof不顯示調用圖
我知道這是在這之前問:gprof - File is missing call-graph data但沒有人真正回答這個問題,只給了gprof的替代建議。
我也有一個令人失望的經驗尋找答案。
具體來說:以下對我有幫助(最新的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")
很可能是一個或兩個優化選項導致所有問題。