2

PCに接続された単一のAndroidデバイスがあり、logcat情報を表示する複数のシェルを開きました。特定のフィルターを使用して実行しているすべての人。だから私の質問は今、それらのフィルターはどこに適用されますか?すでに電話に出ているので、フィルタリングされたメッセージだけがUSB経由で送信されます。または、adbサーバーまたはクライアントのPCに適用されていますか?bandwitdhが制限されているため、フィルタリングされていない複数のlogcatストリームがUSB上で同時に実行されるのを防ぎたいだけです。ありがとう

4

5 に答える 5

1

logcatデータは、デバイスのコマンドを使用してカーネルバッファから取得されます。実行した場合

% adb logcat -\?

「filterspecs」の説明を含む使用法情報を見ることができます。これらは、コマンドラインで設定するか、を設定することで設定できますANDROID_LOG_TAGS。例えば:

% adb logcat '*:W'

警告またはエラーレベルのメッセージのみが表示されます。

ここでの秘訣は、環境変数をデバイスに伝播するという追加のボーナスを伴う、adb logcat単なる省略形です。フィルタリングはコマンドによって実行されます。このコマンドは、テキスト出力をadbにダンプするだけです。コマンドからの出力は特別な扱いを受けません。adb shell logcatANDROID_LOG_TAGSlogcatlogcat

したがって、あなたの質問に対する答えは次のとおりです。フィルタリングはデバイス上で、ウィンドウごとに個別に行われます。

DDMSの動作は異なります。

于 2013-02-08T02:26:11.147 に答える
1

または、adbサーバーまたはクライアントのPCに適用されていますか?

これらは、LogCat情報を提示しているアプリケーションによって適用されます。

于 2013-02-07T13:51:26.990 に答える
1

現在、異なるデバイスで同じビルドを実行することはできません。uビルドが異なる場合は、デバイス名またはバージョンに応じてフィルターを適用できます。

Uがこれをやりたいので、それはいくつかのトリックによって達成されるかもしれません。 Log.v(LOG_TAG,"message"); LOG_TAGでデバイスIDを追加します。これは、TelephonyManagerで識別できます。

そしてそれを使ってフィルターを追加します。

于 2013-02-07T13:51:56.090 に答える
1

Android は、デバイスのログ情報を 4 つの異なるバッファ (イベント ログ、システム ログ、無線ログ、メイン ログ) に保存します。その後、adbdデーモンはこの情報にアクセスしてクライアントに送信できます。したがって、電話ではすべての情報が保存されているため、クライアント側でのみ情報をフィルタリングできます。

于 2013-02-07T14:01:27.070 に答える
0

フィルターは電話に適用されます。そのため、存在しない logcat タグのフィルターを入力すると、トラフィックは USB を通過しません。ただし、cmd シェルで開かれた各 logcat は、合計トラフィックを増加させる新しいストリームを作成します。

于 2013-02-11T14:53:59.530 に答える