問題タブ [systrace]
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 - Android の systrace/atrace で async_start と async_stop を使用するにはどうすればよいですか
自動テストの実行中に、Android フォンで Systrace レポートを取得したいと考えています。テストにかかる時間は不明であるため、Systrace の--time期間を指定することはできません。
systrace.py をさらに掘り下げると、systraceがatraceを使用してカーネル ログを取得していることがわかりました。
adb shell atrace --help
私は次の出力を使用して得ました:
自動テストの開始時にatraceを使用してトレースを開始し、自動テストの終了時にトレースとカーネル ログのダンプを停止するにはどうすればよいですか?
以下のコマンドを使ってみましたが、うまく動かないと思います。async_dump だけがログにいくつかのデータを提供します。async_stop ダンプのログにはコンテンツがありません。トレースを適切に開始し、ダンプしてから停止するにはどうすればよいですか?
android - Galaxy S4 で Lollipop の一貫性のない CPU 使用率
私は Android 用のゲームを開発しており、主に Samsung Galaxy S4 でテストしています。
ただし、Lollipop (5.0.1) をインストールしてから、ゲームが時々フリーズすることがわかりました。時々 200 ミリ秒になるため、約 10 フレーム落ちます。
このゲームは、Lollipop を実行している他の複数の (S4 以外の) デバイスでもテストされていますが、これは行われていません。
Android Studio の CPU 使用率モニターを見ると、CPU 使用率のより一般的な (上向きの) スパイクとは正反対です。CPU 使用率が上昇するどころか低下していることに気付きました。
これは Lollipop/Galaxy S4 でよくある問題ですか?
これの原因を突き止めるために私ができることについて誰か提案がありますか?
android - ジャンクとフレームの最新の Android Systrace コマンドのマーカーをトリガーする方法は?
最新の Android Systrace ページ ( http://developer.android.com/tools/debugging/systrace.html#options-4.3 ) には、「Alerts」と「Frames」のトレース行が表示され、悪いことが発生した場所が円で囲まれています。
多くのジャンクを見たにもかかわらず、これらのマークを含む trace.html ファイルを作成できませんでした。
スクリーンショットを撮ったページを作成するために Google がどのコマンドを使用したか知っている人はいますか? 悲しいことに、彼らはそれを提供しません。
android - Systrace にプライベート トレース要素を追加するにはどうすればよいですか?
systrace でトレース ログを収集した後、それらを分析するためにいくつかのプライベート トレース要素を追加しようとしています。それを解決するために、 Android 4.3 の Systraceについて読みましたが、Java を使用した App 層での解決策だけですよね?カーネルレベルでさらに微量元素を追加することは可能ですか?
同じ質問はhttps://stackoverflow.com/questions/28080582/android-systrace-add-custom-kernel-traces ..
誰か私がそれを解決するのを手伝ってください...
c - LD_PRELOAD は syscall をインターセプトできませんが、libcall のみをインターセプトできますか?
私のコードは でうまく動作しますがmalloc
、 では動作しませんmmap
。コードは以下のとおりです。
main.c
preload.c
それをコンパイルする
で実行しますLD_PRELOAD
strace で実行するには
からの出力は へのLD_PRELOAD
呼び出しをフックせず、 へmmap
の呼び出しのみをフックしますmalloc
。一方、 を使用して実行すると、が複数回呼び出されstrace
たことを示す出力が表示されます。mmap
この結果は私を困惑させます。mmap
が実際に呼び出されたと仮定するとmain.c
(私は を介して推測しますmalloc
)、どうしてpreload.c
インターセプトできないのmmap
ですか?
PS: 私のプラットフォームは、Linux カーネル 3.13 を搭載した Ubuntu 14.04 です。
PS2: syscall とは、libc の syscall ラッパーを意味します (ただし、これが質問に違いをもたらすかどうかはわかりません)。
linux - Linux ですべてのシステム コールをフックする
目標は、Linux のすべてのシステム コールにフックを追加することです。つまり、300 の Linux システム コールが呼び出される前にフック関数が呼び出されるようにする必要があります。
ハックがありsys_call_table
ます (例: [ここ]) が、1 つまたはいくつかのシステム コールしかフックできません。つまり、read()
ハイジャックする必要がある場合、sys_read
エントリはsys_call_table
フック ハンドラを持つ新しい関数に変更されます。
もちろん、300 個のシステムコール エントリすべてを手動でフックすることもできます。しかし、コードをほとんど変更しない、よりエレガントなアプローチを探しています。
entry_64.S
可能なアプローチは、存在するファイルを変更することですENTRY(system_call)
。entry_64.S
ただし、Linux カーネル モジュールを使用してライブ システムをハックする必要があるため、実行中の Linux システムのメモリ イメージを変更するのは困難です。
だから私の質問は:
entry_64.S
設計が理にかなっている場合、カーネル コードが存在するライブ メモリ領域 (カーネル コード セグメント) を変更する方法は?- 一般に、Linux src コードの 1 か所 (または少数) を変更して、すべての sys 呼び出しをフックできるようにする方法が意味をなさない場合。
PS: プラットフォーム: Linux 3.16 および x86_64
PS2: 繰り返しますが、私の質問はsys_call_table
、以前のスタック オーバーフローの質問のハックとは異なります。詳細については、パラグラフ 2 を参照してください。