|
ftrace †本ページの位置:「シリコンリナックス」→「技術情報 CAT wiki」→「ftrace」 カーネルトレーサ ftrace の使い方について 対象
準備 †解析ツール trace-cmd をビルドする †開発PCにて # apt-get install git swig asciidoc locate groff # updatedb (locate情報を作っておかないと trace-cmdのmake時に docbook-xmlが無いと言われdocumentのビルドに失敗する) ソースコードダウンロード $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git trace-cmd-stable-v1 ビルド $ cd trace-cmd-stable-v1 $ make $ su rootユーザになり /usr/local へインストール # make install # exit rootユーザでの作業終了 さらに sh4用の trace-cmd をビルドする $ make clean $ make CROSS_COMPILE=sh4-linux-gnu- NFSやFTPを使って SH4用の trace-cmd をCAT724の /usr/local/bin にコピーする カーネル †カーネルをコンフィグレーションし ftrace を有効にする 開発PCにて $ cd カーネルソース $ make cat724_defconfig $ make menuconfig Kernel hacking ---> [*] Debug Filesystem [*] Tracers ---> [*] Kernel Function Tracer [*] Kernel Function Graph Tracer (NEW) 出来上がった arch/sh/boot/zImage を /dev/mtdblock1 に上書きしてカーネルを更新する CAT724にて # cp カーネルソースの/arch/sh/boot/zImage /tmp # cp /tmp/zImage /dev/mtdblock1 CAT724の /etc/fstab に1行追加して debugfs を有効化する debugfs /sys/kernel/debug debugfs none 0 0 CAT724を再起動する CAT724にて # reboot ftraceの使い方 †ターゲット機の/proc/sys/kernel/ftrace_enabled が 1 であることを確認する CAT724にて # cat /proc/sys/kernel/ftrace_enabled 1 もし 0 だったら有効化するために # echo 1 > /proc/sys/kernel/ftrace_enabled とする 使用可能なトレーサ # cd /sys/kernel/debug/tracing # cat available_tracers function_graph function nop function_graphを使用してみる # echo function_graph > current_tracer # cat trace | head -100 ftrace_dump_on_oops を有効にしておくと oops (kernel panic)時にftraceを表示する # echo 1 > /proc/sys/kernel/ftrace_dump_on_oops trace-cmdの使い方 †カレントディレクトリにログファイル trace.dat を作る。 移動 # cd /tmp lsコマンドのログをとる # trace-cmd record -p function_graph ls -ltr /usr/ > /dev/null レポートの表示 # trace-cmd report リモートtrace-cmd †開発PCがサーバ、CAT724がクライアントとなる 開発PCにてポート5678で待ち受け(ログ記録) $ trace-cmd listen -p 5678 CAT724にて # trace-cmd record -N 開発PCのIPアドレス:5678 -e sched -p function_graph しばらくして CTRL+C で停止 開発PCにて CTRL+C でログ記録を中止し $ trace-cmd report ログファイル名 外部リンク †関連 † |