7

Systrace Android ツールは、 ftraceまたはstrace (Linux ツール)を拡張したatraceというツールを内部的に呼び出します。

エミュレータ コンソール (ADB シェル) 経由で Android Jelly Bean に接続すると、straceツールは実行できますが、ftraceツールは実行できません(コマンドがインストールされていません)。

インターネットでいくつかの調査を行ったところ、straceがftraceの前身であることがわかりました。

Android ソースコードを見ると、私が見つけた最も「内部的な」リファレンスはTrace.hファイルです: http://androidxref.com/4.1.1/xref/frameworks/native/include/utils/Trace.h

その後、このファイルはネイティブの Linux ドライバーに解決されると思います。

ただし、この実装ドライバーがstraceに属しているのかftraceに属しているのかはまだわかりません。「普通」なら新しいのでftraceのはずなのですが、そうなるとなぜエミュレータからftraceを実行できないのかわかりません。対照的に、straceはエミュレータから完全に利用できます。

次に、 Systrace Android ツールが非常に低レベルのstraceまたはftraceで使用するかどうかを誰かが知っていますか?

ありがとうございました!

4

1 に答える 1

7

ftraceに関連するこちらの指示に従いました: http://www.linuxforu.com/2010/11/kernel-tracing-with-ftrace-part-1/

すべてが完璧に機能します。データのやり取りと取得は論理パスを介して行われるため、以前はftraceを実行できませんでした。

ftraceを実行するには、正しく構成した後 (多くの手順...)、adb シェル内で次のようにします。

root@android:# cat /sys/kernel/debug/tracing/trace > mytracefile.txt

atraceを使用すると構成プロセスが簡単になるため、次の方法でトレース情報にアクセスできます。

root@android:# atrace -s -w -t 100 > mytracefile.txt

一方、straceの実行に関する情報は、 http : //www.hokstad.com/5-simple-ways-to-troubleshoot-using-strace で見つけました。

示されたすべての例は、adb shell を使用して私の環境で正常に実行されました。

両方のツールの相互作用と結果へのアクセスは大きく異なります。

これで、systrace Android ツールは atrace に基づいており、これは ftrace に基づいていると言えます。

straceもサポートされていますが、別の目的で使用され、systraceとは関係ありません。

よろしく、

于 2013-04-09T14:44:23.110 に答える