Red Hat Training

A Red Hat training course is available for RHEL 8

24.2. perf を使用した関数内の行でのアップローブの作成

その後、このトレースポイントを perf statperf record などの他の perf ツールと併用すると、プロセスやアプリケーションの動作をよりよく理解できるようになります。

前提条件

  • perf のインストール で説明されているように、perf ユーザー領域ツールがインストールされている。
  • 実行ファイルのデバッグシンボルを取得している。

    # objdump -t ./your_executable | head
    注記

    これを行うには、実行ファイルの debuginfo パッケージをインストールする必要があります。または、実行ファイルがローカルで開発したアプリケーションの場合は、デバッグ情報 (GCC の -g オプション) を使用してアプリケーションをコンパイルする必要があります。

手順

  1. プローブを配置できる関数行を表示します。

    $ 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);
  2. 目的の関数行の 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