次のような場所を見てください:
/proc/last_kmsg
/data/tombstones/
/data/dontpanic/
/data/system/dropbox/
(このリストは厳密にはカーネル ログではなく、フレームワークやアプリケーションのログも含まれます。これらも重要な場合があります)
TL;DR :
logcat と proc/kmsg をファイルにコピーする adb を介してコマンドを実行し、adb が nohup
で切断されても実行し続ける 、 disown
または setsid
.おそらくbusyboxが必要で、rootとadb rootも必要です。
setsid cat proc/kmsg > /sdcard/kmsg.txt &
と
logcat -v long -f /sdcard/logcat.txt
(どういうわけか setsid
なしでのみ動作します )
または、起動スクリプトに通常のコピー コマンドを追加します。
/TL;DR
常に proc/kmsg
をコピーできます そして logcat
Android デバイスまたは microSD カード上のファイルに保存して、adb が切断された後でもログを取得します。
これが機能するには、ルート アクセスと adb ルート アクセスが必要です。後者の場合、カスタム rom または adbd の安全でないアプリがある場合は、開発者向けオプションの設定を使用します。
adb shell
使用後 Android シェルを取得するには、su
と入力します スーパーユーザー アクセスを取得します。
アンパサンド (&
)コマンドの後だけでなく、adbが切断された後もコマンドが実行され続けることを確認してください。それは nohup
によって行われます 、 disown
または setsid
(使い方はこちら)。
これらのコマンドがないために動作しない場合は、busybox をインストールする必要があります。
こちらの質問をご覧ください。
logcat およびカーネル ログを取得してファイルに出力する方法、またはマージする方法については、こちらを参照してください。logcat コマンドのパラメータについては、developer.android.com/tools/help/logcat.html を参照してください。
最後に、 setsid cat proc/kmsg > /sdcard/kmsg.txt &
のようなコマンドを使用できます カーネルメッセージ用。
logcat の場合、次のコマンドのいずれかを使用できます:logcat -v long -f /sdcard/logcat.txt
または logcat -v long > /sdcard/logcat.txt
理由はわかりませんが、時々 setsid
で動かないことがありました 継続的にコピーしませんでしたが、コマンドを実行した直後に停止しました。これらの状況では、 jobs
を入力したときにも表示されました 、それ以外の場合はそうではありませんでした。その後、 setsid
なしで機能しました 、切断して再接続した後も生き続けました。ファイルが大きくなり続けるときに試してみる必要があると思います。誰かがなぜそれがそのように振る舞うかを理解したら...私に知らせてください.答えを編集します.
おそらく、コマンドを起動スクリプトに追加することも、一部の解決策になる可能性があります.
これがお役に立てば幸いです。
ファイトクッキー
Android でシャットダウン ログを収集するために私が見つけた 1 つの回避策は、adb pull /proc/kmsg C:\Logs.txt
を実行することです。 ホスト PC で、デバイスの電源をオフにします。ホストとデバイス間の USB 通信がスナップするまで、ログを取得します。これは多数のシャットダウン シナリオのうちの 1 つのケースに過ぎないことはわかっていますが、他のケースに対する満足のいく答えは見つかりませんでした!