24.2. perf を使用した関数内の行でのアップローブの作成
その後、このトレースポイントを perf stat や perf record などの他の perf ツールと併用すると、プロセスやアプリケーションの動作をよりよく理解できるようになります。
前提条件
-
perf のインストール で説明されているように、
perfユーザー領域ツールがインストールされている。 実行ファイルのデバッグシンボルを取得している。
# objdump -t ./your_executable | head注記これを行うには、実行ファイルの
debuginfoパッケージをインストールする必要があります。または、実行ファイルがローカルで開発したアプリケーションの場合は、デバッグ情報 (GCC の-gオプション) を使用してアプリケーションをコンパイルする必要があります。
手順
プローブを配置できる関数行を表示します。
$ perf probe -x ./your_executable -L mainこのコマンドの出力は、以下のようになります。
<main@/home/user/my_executable:0> 0 int main(int argc, const char **argv) 1 { int err; const char *cmd; char sbuf[STRERR_BUFSIZE]; /* libsubcmd init */ 7 exec_cmd_init("perf", PREFIX, PERF_EXEC_PATH, EXEC_PATH_ENVIRONMENT); 8 pager_init(PERF_PAGER_ENVIRONMENT);目的の関数行の uprobe を作成します。
# perf probe -x ./my_executable main:8 Added new event: probe_my_executable:main_L8 (on main:8 in /home/user/my_executable) You can now use it in all perf tools, such as: perf record -e probe_my_executable:main_L8 -aR sleep 1