できない。実行すると、gmon.out はできるのだがそれを出力すると下記のようになり、意味を無さない。


Each sample counts as 0.01 seconds.
%   cumulative   self              self     total
time   seconds   seconds    calls  ms/call  ms/call  name
100.00      0.01     0.01        2     5.00     5.00  QTERuputer::metaObject(void) const
0.00      0.01     0.00  6560548     0.00     0.00  MemoryBase::isAddressOver(unsigned long)
0.00      0.01     0.00  5655269     0.00     0.00  State::getState(void)
0.00      0.01     0.00  5537982     0.00     0.00  MemoryBase::readMemory8(unsigned long)
0.00      0.01     0.00  4752384     0.00     0.00  LcdBlRvMgr::getPixelStatus(int, int)

回数は正しい値のようであるが時間がおかしい。0.01 しか経過していないわけがない。何が原因なのかなぁ……。
追記:

やったこととか。

  • special kernel が原因だと思い、元に戻して実行したが変わらず(出力結果は異なるがおかしい)
  • gprof が “arm-linux” 向けでないのが問題だと思い、zaurus 上の gprof で gmon.out を処理させてみたが、出力は x86 Linux の gprof 変わらなかった
  • 当然最適化は off
  • 使用しているのは QT 込みの C++
  • コンパイル・リンクに使用したツールは 宝箱Pro SLシリーズ関連 開発ツール一覧 より落した純正のもの。

固定小数点演算化 timidity の方は正常に profile とれているように見えるのだが、何が違うのだろうか……。

コメントを残す

メールアドレスが公開されることはありません。