2011-10-09 42 views

回答

7

要使Android-NDK探查器工作並不容易。您需要徹底遵循步驟here

這裏有一些提示,導致我的成功:

  • 確保您android.mk是正確的,您導出NDK_MODULE_PATH。
  • 正確使用以下功能

    monstartup(「your_lib.so」);

    moncleanup();

  • 如果現在生成gmon.out,則需要將其從設備中拉出,但不能放到PC中的任何位置。對於我來說,只要我去應用程序的文件夾的作品(其中JNI,OBJ,資源和其他文件夾),我做的事:

    控制檯$ ADB拉SD卡/是gmon.out

  • 然後運行gprof的。試試你的NDK工具鏈中的所有版本。對我來說,只是一個工作,這一個:

    控制檯$〜/庫/ Android的NDK-R9 /工具鏈/ ARM-Linux的androideabi-4.8 /預建/ Linux的x86_64的/ bin中/ ARM-Linux的androideabi -gprof OBJ /本地/ armeabi-V7A/libxxxx.so> profile.txt

8

Shiny profiler是平臺獨立的,它運行在任何地方,除了標準的C++編譯器外,它沒有任何依賴關係。在更簡單的用法中,您只需在所有函數和方法(或至少是您想要配置的那些)的開頭添加一個宏。

+2

修改項目中的每個功能是痛苦的新工具。我更喜歡自動儀器。但是,謝謝你的提示! –

+3

如果沒有其他工作,我保證你會閃亮。我和webOS有類似的問題。 gprof支持被打破了,沒有別的可用。 Shiny做得非常好,幫助我解決了性能問題。爲了編寫代碼,我只寫了一個腳本,它使用正則表達式定位所有函數體,然後自動插入宏調用,所以根本沒有痛苦。祝你好運。 – Miguel

+0

有道理!自動宏插入,我的意思是。謝謝! –

2

英特爾VTune放大器。此分析器允許您收集熱點,其中包含Android沒有root或任何操作系統修改的設備。 這裏有簡單的指導: http://software.intel.com/en-us/articles/using-intel-vtune-amplifier-on-non-rooted-android-devices

+0

關於他們開始針對Android的時間。但他們支持ARM,還是隻支持x86? –

+0

是的,它在拱門上運作良好。 –

+0

嗨伊利亞! :)它實際上比android-ndk-profiler更好嗎?它要多少錢? –

1

在NDK R13B有一個叫simpleperf

+0

Simpleperf記錄在https://android.googlesource.com/platform/system/extras/+/master/simpleperf/README.md – osgx