簡體   English   中英

在perf中配置c ++程序

[英]Profile c++ program in perf

我是Ubuntu 16.04用戶。 對於配置c++程序,我使用perf工具。 所以我跑:

perf record ./myprogram myprogram_args
perf report 

現在作為輸出,我有:

  14,52%  CSim2Sim  libsimgrid.so.3.13.90  [.] lmm_solve
   4,40%  CSim2Sim  libsimgrid.so.3.13.90  [.] lmm_update_modified_set_rec
   4,05%  CSim2Sim  libc-2.23.so           [.] _int_malloc
   3,30%  CSim2Sim  libsimgrid.so.3.13.90  [.] simgrid::surf::Model::next_occuring_event_lazy
   2,19%  CSim2Sim  libc-2.23.so           [.] _int_free
........................................................................

我只能從程序中看到“深度”和庫調用。 如何從類似於此模板的性能報告中獲取報告? (類似這樣):

  4,52%  CSim2Sim  my_function1(int argc, char* argv[])
  3,52%  CSim2Sim  my_function2(int argc, char* argv[])
  3,52%  CSim2Sim  my_function3(int argc, char* argv[])
  1,52%  CSim2Sim  my_function4(int argc, char* argv[])

info:perfPerf Wiki ,最后到Tutorial-Perf Wiki

使用perf注釋的源代碼級別分析
...
如果使用-ggdb編譯應用程序,則perf注釋可以生成源代碼級別的信息。 下面的代碼片段顯示了使用此調試信息進行編譯時,對於相同執行noploop的更多信息輸出。

因此,使用選項-ggdb編譯(也許鏈接?)應該可以解決問題。

然后,您可以使用perf record來收集運行時信息,然后使用perf annotate進行分析。


我剛剛找到了gprof替代方法的答案。 如果要獲取調用圖信息,建議使用gcc的選項-fno-omit-frame-pointer 因此,根據您要實現的目標和優化級別,您可能還需要添加此選項。

我也建議使用gprof(1) 您可以通過將-pg (可能還帶有-O ....)傳遞給gcc和/或g++ (也許在您的Makefile更改某些CFLAGSCXXFLAGS )來編譯C(或C ++)程序。 閱讀有關GCC的檢測選項的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM