web-dev-qa-db-ja.com

Android:カーネルパニック後にカーネルログを取得する方法

私は、デバイスでAndroid Custom ROMを使用しています。カスタムboot.img(カスタムカーネル+ cmdline + ramdisk)も使用しています。カーネルパニックの直後にカーネルログを表示できますが、残念ながらシリアルコンソールを使用できません。

良いニュース:LinuxカーネルにはAndroidのLinuxカーネルにいくつかのソース/モジュールがあるようです。これらはまさにこの目的のために記述されています。たとえば、次の行は私の.configファイルでカーネル:

CONFIG_Android_RAM_CONSOLE=y
CONFIG_Android_RAM_CONSOLE_ENABLE_VERBOSE=y
CONFIG_APANIC=y
CONFIG_APANIC_PLABEL="oem_log"

私の問題は、これをテストするためにカーネルパニックを強制した後、つまり、単純なパニックカーネルモジュールをinsmod panic.ko、MTDにoem_log(デバイスに存在する)という名前のログが書き込まれなかったようです。第二に、RAMは、再起動後にクリアされたように見えるため、ログも含まれません-または、ログも書き込まれません。

パニック後にカーネルログを取得するにはどうすればよいですか?また、実行中のシステムでAPANICをテストできる方法があれば役立ちます。たぶん、カーネルデバッグシステムを使用することによって?今のところ、私はこれにかなり慣れています。

助けてくれてありがとう!

23
mreichelt

私としては、

cat /proc/last_kmsg 

再起動後(insmod中にカーネルパニックが原因)、クラッシュに関連するメッセージが一覧表示されます。

[  424.909515] Kernel panic - not syncing: Fatal exception
[  424.909606] Backtrace: 
[  424.909790] [<c005a5ec>] (dump_backtrace+0x0/0x10c) from [<c05f38dc>] (dump_stack+0x18/0x1c)
[  424.909973]  r6:c5cccf00 r5:00000000 r4:c08505a0 r3:00000000

少なくとも試してみてください。 Galaxy NexusでLinux 3.0.31-g4f6d371を使用しています。

26
h22

Android-7.0以降では、last_kmesgログが/ sys/fs/pstore/console-ramoopsに移動しているようです。

cat /sys/fs/pstore/console-ramoops

nexus-5xでうまく機能します

9
zhiqiu

/data/dontpanicフォルダ?カーネルパニックが発生した後、USBケーブルをAndroidデバイスに接続し、ADBを介してそのフォルダー内のファイルを確認できます。

カーネルパニックが発生した後、このフォルダーにはいくつかのapanicファイルが含まれています。たとえば、カーネルパニックが発生したばかりで、フォルダを確認すると、次の2つのファイルが見つかる場合があります。

apanic_console

apanic_threads

apanic_threadsカーネルパニックが発生したときに実行しているスレッド/プロセス。 apanic_consoleスタックトレースやいくつかの重要なレジスタの値などの詳細情報を見つけることができます:PCLRなど。
これらは、デバッグを開始するのに役立ちます。

8
Weilin Luo

AndroidはRAMコンソールを作成し、最後のカーネルメッセージバッファーをRAMに保存しようとします(電源が切れない場合)。アクセスできます。このファイルはprocインターフェースを介しており、私のシステムでは誰でも読み取り可能です。

cat /proc/last_kmsg

詳細については、カーネルコード@ drivers/staging/Android/ram_console.cを参照してください。

3
Kyle

Androidでシャットダウンログを収集するsimilar問題に直面しました。私はずっと前にこの質問を投稿しましたが、2つのアプローチがあります。私は2番目のものを使用しますが、1番目のものは私にとってはうまくいきません。ここに質問があります

どこでAndroidシャットダウンログを保存しますか?

お役に立てれば。

1
Pavan Manjunath