33

を使用するperf reportと、プログラムのシンボルが表示されず、代わりに次のような出力が得られます。

$ perf record /path/to/racket ints.rkt 10000
$ perf report --stdio

# Overhead   Command      Shared Object  Symbol
# ........  ........  .................  ......
#
    70.06%  ints.rkt  [unknown]          [.] 0x5f99b8        
    26.28%  ints.rkt  [kernel.kallsyms]  [k] 0xffffffff8103d0ca
     3.66%  ints.rkt  perf-32046.map     [.] 0x7f1d9be46650  

これはかなり有益ではありません。

関連するプログラムはデバッグ シンボルを使用してビルドされており、sysprofツールは適切なシンボルを表示します。Zoom は内部で使用されていると思いますperf

これは x86-64 上にあるため、バイナリは でコンパイルされ-fomit-frame-pointerますが、他のツールで実行する場合も同様です。

4

8 に答える 8

1

「$ nm」コマンドはいつでも使用できます。

出力例を次に示します。

Ethans-MacBook-Pro:~ phyrrus9$ nm a.out
0000000100000000 T __mh_execute_header
0000000100000f30 T _main
                 U _printf
0000000100000f00 T _sigint
                 U _signal
                 U dyld_stub_binder
于 2013-07-20T21:33:26.000 に答える
0

I got the same problem with perf after overriding the name of my program via prctl(PR_SET_NAME)

As I can see your case is pretty similar:

70.06% ints.rkt [unknown]

Command you have executed (racket) is different from the one perf have seen.

于 2013-09-06T12:34:47.200 に答える
0

開発ホスト マシンはどうですか? x86_64 OS も実行していますか? そうでない場合は、perf がクロスコンパイルされていることを確認してください。perf はツールチェーンの objdump やその他のツールに依存するためです。

于 2012-08-10T02:38:26.173 に答える