問題タブ [ftrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - adb を使用して /sys/kernel/debug/tracing/available_filter_functions を表示すると、そのようなデバイスはありません
彼ら。
Nexus 6P(An Old Android Smartphone)で仮想メモリ管理を勉強しようとしています。
AOSP のデフォルトのカーネルでは CONFIG_FUNCITON_TRACER がオンにならなかったため、関数トレーサを使用してメモリ管理関連の関数を調べることができません。
そこで、Android カーネルのソース コードをダウンロードし、config_function_tracer とそれに依存する他の構成をオンにして、カーネルを再構築しました。次に、再構築されたカーネル イメージ ファイルを aosp に配置し、再構築された boot image を実行して、ビルド出力イメージを電話にフラッシュします。
電話は正常に起動できます。すべて問題ありませんが、「cat /sys/kernel/debug/tracing/available_filter_functions」を正常に実行できません。「そのようなデバイスはありません」と表示されます。
selinux ラベルを確認し、コマンド 'setenforce permissive' で selinux をオフにしましたが、役に立ちません。
誰でもこの問題を解決するのを手伝ってもらえますか?
linux - Linux ftrace は、ロードされたモジュールのトレースを提供しません
hello.ko
次の関数でカーネル スレッドを生成するという名前のテスト カーネル モジュールを作成しました。
ここで、ftrace を介してこの関数をトレースしたいと思います。したがって、モジュールがロードされるとシンボルが使用可能になることがわかります。
この関数をフィルタリングするように設定し、トレースをオンにしましたがthread_fn
、関数が呼び出されたことを示す dmesg ログを取得しているにもかかわらず、トレースには何も表示されません。
トレースでは何も得られませんが、以下は、dmesg
トレースしようとしている同じ関数から繰り返し取得しているログです。
私のカーネルのバージョンは5.8.0
で、これを実行していますqemu-aarch64 version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.37~cloud0)
私はここで愚かなことをしていますか?それとも、既知の問題にぶつかっていますか?
編集
rootfs として Buildroot を使用しています。trace-cmd
今回は、ftrace を直接操作する代わりに使用しました。モジュールをロードし、dmesg
上記のように からログを確認できますthread_fn
。
しかし、私は再び何も得られませんでした。
編集 @IanAbbott コメントから間違いに気付いた後、コードを少し修正して、トレースがアクティブなときに少なくともトレースされている関数が呼び出されるようにしました (エントリ/出口がなく、数行しかなかった以前のケースの代わりに)トレースがアクティブな間、ループで実行されます)。
今、hello_log
関数からトレースを取得することを期待していましたが、トレースで何も取得しません。今何が問題なのですか?