問題タブ [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.

0 投票する
1 に答える
2655 参照

android - Android の systrace/atrace で async_start と async_stop を使用するにはどうすればよいですか

自動テストの実行中に、Android フォンで Systrace レポートを取得したいと考えています。テストにかかる時間は不明であるため、Systrace の--time期間を指定することはできません。

systrace.py をさらに掘り下げると、systraceatrace使用してカーネル ログを取得していることがわかりました。

adb shell atrace --help私は次の出力を使用して得ました:

自動テストの開始時にatraceを使用してトレースを開始し、自動テストの終了時にトレースとカーネル ログのダンプを停止するにはどうすればよいですか?

以下のコマンドを使ってみましたが、うまく動かないと思います。async_dump だけがログにいくつかのデータを提供します。async_stop ダンプのログにはコンテンツがありません。トレースを適切に開始し、ダンプしてから停止するにはどうすればよいですか?

0 投票する
0 に答える
297 参照

android - Galaxy S4 で Lollipop の一貫性のない CPU 使用率

私は Android 用のゲームを開発しており、主に Samsung Galaxy S4 でテストしています。
ただし、Lollipop (5.0.1) をインストールしてから、ゲームが時々フリーズすることがわかりました。時々 200 ミリ秒になるため、約 10 フレーム落ちます。

このゲームは、Lollipop を実行している他の複数の (S4 以外の) デバイスでもテストされていますが、これは行われていません。
Android Studio の CPU 使用率モニターを見ると、CPU 使用率のより一般的な (上向きの) スパイクとは正反対です。CPU 使用率が上昇するどころか低下していることに気付きました。

CPU 使用率のスパイク

これは Lollipop/Galaxy S4 でよくある問題ですか?
これの原因を突き止めるために私ができることについて誰か提案がありますか?

0 投票する
2 に答える
363 参照

android - ジャンクとフレームの最新の Android Systrace コマンドのマーカーをトリガーする方法は?

最新の Android Systrace ページ ( http://developer.android.com/tools/debugging/systrace.html#options-4.3 ) には、「Alerts」と「Frames」のトレース行が表示され、悪いことが発生した場所が円で囲まれています。

多くのジャンクを見たにもかかわらず、これらのマークを含む trace.html ファイルを作成できませんでした。

スクリーンショットを撮ったページを作成するために Google がどのコマンドを使用したか知っている人はいますか? 悲しいことに、彼らはそれを提供しません。

0 投票する
0 に答える
112 参照

android - Systrace にプライベート トレース要素を追加するにはどうすればよいですか?

systrace でトレース ログを収集した後、それらを分析するためにいくつかのプライベート トレース要素を追加しようとしています。それを解決するために、 Android 4.3 の Systraceについて読みましたが、Java を使用した App 層での解決策だけですよね?カーネルレベルでさらに微量元素を追加することは可能ですか?

同じ質問はhttps://stackoverflow.com/questions/28080582/android-systrace-add-custom-kernel-traces ..

誰か私がそれを解決するのを手伝ってください...

0 投票する
3 に答える
3834 参照

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 ラッパーを意味します (ただし、これが質問に違いをもたらすかどうかはわかりません)。

0 投票する
0 に答える
1442 参照

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 システムのメモリ イメージを変更するのは困難です。

だから私の質問は:

  1. entry_64.S設計が理にかなっている場合、カーネル コードが存在するライブ メモリ領域 (カーネル コード セグメント) を変更する方法は?
  2. 一般に、Linux src コードの 1 か所 (または少数) を変更して、すべての sys 呼び出しをフックできるようにする方法が意味をなさない場合。

PS: プラットフォーム: Linux 3.16 および x86_64

PS2: 繰り返しますが、私の質問はsys_call_table、以前のスタック オーバーフローの質問のハックとは異なります。詳細については、パラグラフ 2 を参照してください。