oprofile
というラベルを付けるのではなく、カーネル内で何が起こっているかについての詳細情報を表示する必要があります/no-vmlinux
。
oprofile
カーネル シンボルを提供できるようにするために、圧縮バージョンから入手extract_vmlinux
できるスクリプトを使用しました。/usr/src/linux-headers-3.9.7/scripts
vmlinux
vmlinuz
次にoperf
、オプションで呼び出しました--vmlinux path_to_vmlinux
。ただし、operf
次のエラー メッセージが表示されます。
vmlinux 終了アドレスを取得できません 指定された vmlinux ファイル (/tmp/vmlinux) が有効ではないようです。圧縮されていないイメージ ファイルを使用していることを確認してください (例: vmlinux ではなく vmlinuz)。
のコードでこのエラー メッセージをたどることでoperf
、呼び出し後に発生する可能性が最も高いことがわかりましたobjdump -t
(オプション -t は、objdump のマンページによると、「ファイルのシンボル テーブル エントリを出力します。」)。objdump -t vmlinux
"、次の出力が得られます。
vmlinux: file format elf64-x86-64
SYMBOL TABLE:
no symbols
手伝っていただけませんか?