1

ストリップされたバイナリで oprofile を使用する方法を見つけようとしていますが、後でシンボル テーブルが利用可能になったときに詳細な情報を取得できますが、これまでのところ解決策が見つかりません。

これが私の状況です: 私たちのソフトウェアはストリップされた状態で顧客に出荷されますが、ビルド マシンにはストリップされていないバージョンがあります。ソフトウェア クラッシュが発生した場合、バックトレースを送り返すことができ、それをローカルのストリップされていないビルドで解釈できます。

oprofile はサンプルの取得とサンプルの解釈に関するものですが、このプロセスを切り離す方法はありますか? oprofile/opreport が 16 進アドレス ベースのプロファイル情報を生成し、すべてのシンボルが利用可能な別のマシンで解釈できる方法はありますか。サンプルファイルをコピーして戻すことで、そうすることができますか?

可能だと確信しているので、専門家にアドバイスを求めています。詳細な手順はいいでしょう。

前もって感謝します。

4

1 に答える 1

2

私はそれを行う方法を見つけました。最高ではないかもしれませんが、これが十分な関心を生まなかったことに驚いています。

「mybin」というバイナリがあり、そのストリップ バージョンを顧客のサイトで実行しているとします。ここに私の手順があります:

  1. 顧客 (またはフィールド エンジニア) に oprofile を実行してもらい、9 ヤード (セットアップ、開始、ダンプ、およびシャットダウン) を実行してから、次のことを行います。

    tar czf OP-`date +"%Y%m%d%H%M%S"`.tgz /var/lib/oprofile
    

    そしてそれを返送します。

  2. ビルド マシンで、次の操作を行います。

    mkdir /tmp/migrate && cd /tmp/migrate
    tar xzf OP-*.tgz
    

    これで、ターゲットの全体的な CPU 使用率を確認できます。

    opreport -% --session-dir=/tmp/migrate/var/lib/oprofile
    

    「mybin」が /home/nobody/build/1.2.0/ の下に構築されている場合は、次を使用できます

    opreport -l mybin --image-path /home/nobody/build/1.2.0/ --session-dir=/tmp/migrate/var/lib/oprofile
    

    「mybin」のみの詳細を表示します。

于 2011-09-11T01:34:23.067 に答える