close

目前使用兩種 tool

(1) etrace

etrace  是根據 gcc 在下 -finstrument-function在 function 前後加入 code 。

使用分法要開兩個terminal 在同一資料夾下。

terminal A : ./etrace.pl prog

terminal B: ./prog

 

function 的 call graph 會在 terminal A 印出來,以下為官方的example :

 

\-- main
|   \-- Crumble_make_apple_crumble
|   |   \-- Crumble_buy_stuff
|   |   |   \-- Crumble_buy
|   |   |   \-- Crumble_buy
|   |   |   \-- Crumble_buy
|   |   |   \-- Crumble_buy
|   |   |   \-- Crumble_buy
|   |   \-- Crumble_prepare_apples
|   |   |   \-- Crumble_skin_and_dice
|   |   \-- Crumble_mix
|   |   \-- Crumble_finalize
|   |   |   \-- Crumble_put
|   |   |   \-- Crumble_put
|   |   \-- Crumble_cook
|   |   |   \-- Crumble_put
|   |   |   \-- Crumble_bake

 

可以發現只有自己的application function 有印出,C library 的 function 及 crt0.o 等function 並沒有。

 

(2) valgrind,kcachegrind

以下為我下的參數

1. valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --show-below-main=yes ./prog ( 會產生一個叫 callgrind.out.xxx )

2 kcachegrind callgrind.out

 

第2種方式可以印出很多資訊,我用這種profiling 去 trace program 開始執行到 main 做了什麼。相當不錯。

 

 

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 lettice0913 的頭像
    lettice0913

    斑的家

    lettice0913 發表在 痞客邦 留言(0) 人氣()