我无法使用 opreport 生成有用的调用图。结果都完全一致,每个函数都只被自己调用,然后只调用自己,有点令人困惑。
-------------------------------------------------------------------------------
17875174 17875174 99.9325 99.9325 myProg.x FTL::ReclaimWriteStateMachine()
17875173 17875173 9.1289 9.1289 myProg.x FTL::ReclaimWriteStateMachine()
17875174 17875174 49.9925 49.9925 myProg.x FTL::ReclaimWriteStateMachine()
17875173 35750347 49.9925 99.9850 myProg.x FTL::ReclaimWriteStateMachine() [self]
-------------------------------------------------------------------------------
14133500 14133500 100.000 100.000 myProg.x Superblock::PageDataStore::ValidUnits() const
14133500 32008673 7.2180 16.3469 myProg.x Superblock::PageDataStore::ValidUnits() const
14133500 14133500 49.9739 49.9739 myProg.x Superblock::PageDataStore::ValidUnits() const
14133500 28267000 49.9739 99.9479 myProg.x Superblock::PageDataStore::ValidUnits() const [self]
-------------------------------------------------------------------------------
e.t.c
我已阅读此文档,但无济于事。
我正在运行operf -g ./myProg.x
以生成分析信息并opreport -lact 1
查看调用图数据。
我也经常看到这个错误warning: dropping hyperspace sample at offset
,但据我所知,这与我的调用图问题无关。
我已经检查了输出以进行分析,ls
结果operf -g ls -la
是
-------------------------------------------------------------------------------
1 1 4.1667 4.1667 ld-2.17.so _dl_lookup_symbol_x
1 2 4.1667 8.3333 ld-2.17.so _dl_setup_hash
1 3 4.1667 12.5000 ld-2.17.so _dl_load_cache_lookup
1 4 4.1667 16.6667 ld-2.17.so access
1 5 4.1667 20.8333 libc-2.17.so brk
1 6 4.1667 25.0000 libc-2.17.so _itoa_word
1 7 4.1667 29.1667 libc-2.17.so __GI_strncmp
1 8 4.1667 33.3333 libc-2.17.so __xstat
1 9 4.1667 37.5000 libc-2.17.so __lxstat
1 10 4.1667 41.6667 libc-2.17.so mmap64
1 11 4.1667 45.8333 libc-2.17.so xdr_u_long
1 12 4.1667 50.0000 libpthread-2.17.so __pthread_initialize_minimal
2 14 8.3333 58.3333 ld-2.17.so mprotect
2 16 8.3333 66.6667 libc-2.17.so __sendto_nocancel
3 19 12.5000 79.1667 libc-2.17.so __getdents
5 24 20.8333 100.000 ld-2.17.so mmap
31 31 60.7843 60.7843 no-vmlinux /no-vmlinux
31 31 100.000 100.000 no-vmlinux /no-vmlinux [self]
-------------------------------------------------------------------------------
3 34 5.8824 66.6667 ls /usr/bin/ls
3 3 100.000 100.000 ls /usr/bin/ls [self]
-------------------------------------------------------------------------------
e.t.c
让我相信问题不在于我的安装oprofile
,会尝试调整我构建可执行文件的方式