インテル® VTune™ プロファイラー・ユーザーガイド

エラーメッセージ: シンボルファイルが見つかりません

このメッセージは Linux* のみに適用されます。インテル® VTune™ プロファイラーは、ユーザーモード・サンプリングとトレース収集中にシンボルファイルを検出できないエラーメッセージを表示することがあります。次に例を示します。

/opt/intel/vtune_profiler/bin64/vtune -collect hotspots -r test1 - my_test_exe
vtune: 警告: シンボルファイルが見つかりません。
vtune: モジュール [vdso]  を介して渡されたコールスタックは不正確です。
vtune: 結果パス '/home/user/test1' を使用します 
vtune: アクション実行の 75% のレポートを生成 
-----------------------------------------------------
サマリー 
-----------------------------------------------------
経過時間: 6.354 CPU 時間: 6.210
...
vtune: アクション実行の 100% 完了

原因と解決方法

インテル® VTune™ プロファイラーは、シンボル解決できないモジュール [vdso] があることを示し (角括弧は問題のモジュールを示すのに使用されます)、コールスタックが正確でない可能性を通知します。場合によっては、問題のモジュールは [vsyscall] であるかもしれません。

vdso モジュールが動的依存関係リストにあることを確認します。

ldd -d my_test_exe linux-vdso.so.1

=> (0x00002aaaaaac6000) libtbb.so.2
=> /opt/intel/tbb/tbb40_233oss/lib/libtbb.so.2 (0x00002aaaaabc7000) libstdc++.so.6
=> /usr/intel/pkgs/gcc/4.5.2/lib64/libstdc++.so.6 (0x00002aaaaadf5000) libm.so.6
=> /lib64/libm.so.6 (0x00002aaaab117000) libgcc_s.so.1
=> /usr/intel/pkgs/gcc/4.5.2/lib64/libgcc_s.so.1 (0x00002aaaab26c000) libc.so.6
=> /lib64/libc.so.6 (0x00002aaaab481000) librt.so.1
=> /lib64/librt.so.1 (0x00002aaaab6c2000) libdl.so.2
=> /lib64/libdl.so.2 (0x00002aaaab7cb000) libpthread.so.0
=> /lib64/libpthread.so.0 (0x00002aaaab8cf000) /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)

[vdso] への参照がある場合、このエラーメッセージは無視しても問題ありません。この場合、カーネルが実行形式コードをメモリー空間にロードして動的に一時メモリーの割り当てを行い、インテル® VTune™ プロファイラーはそのコードの実行中にいくつかのホットスポット・サンプルを取得しましたが、後処理時には vdso を検出できなかったことを示します。モジュール linux-vdso.so.1 (古い Linux* カーネルでは linux-vsyscall.so.1 または linux-gate.so.1) は、プログラムのアドレス空間にある仮想動的共有オブジェクト (VDSO) です。これは、CPU のマイクロアーキテクチャーに応じて、割り込みや (最近の CPU では) 高速システムコールを介して、ユーザー・アプリケーションにシステム関数への高速アクセスを提供する複雑なロジックを含む仮想ライブラリーです。

関連情報