できない。実行すると、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 とれているように見えるのだが、何が違うのだろうか……。