質問

私は自分のデバイスでandroidカスタムROMを使用しており、カスタムブートも使用しています。img(カスタムカーネル+cmdline+ramdisk)。私は今、カーネルパニックの直後にカーネルログを表示できるようにしたいのですが、残念ながらシリアルコンソールを使用することはできません。

良いニュース:AndroidのLinuxカーネルには、この目的のために正確に書かれたいくつかのソース/モジュールがあるようです。たとえば、myでは次の行がアクティブになります。カーネルの設定ファイル:

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をテストできる方法があれば役に立ちます。たぶんカーネルデバッグシステムを使用していますか?今のところ私はこれにかなり新しいです。

任意の助けを事前に感謝!

役に立ちましたか?

解決

私は

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
.

だからあなたは少なくとも試すことができます。私は銀河系ネクサスのLinux 3.0.31-G4F6D371を使って働いています。

他のヒント

Android-7.0以上では、last_kmesgログが次のように移動されます。/ sys / fs / pstore / console-ramoopsのようにしてください。

cat /sys/fs/pstore/console-ramoops
.

Nexus-5X

で私にとってうまく機能します

どのように約 /data/dontpanic フォルダ?カーネルパニックが発生した後、あなたのAndroidデバイスとUSBケーブルを接続し、そのフォルダ内のファイルを確認することができます ADB.

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

apanic_console

apanic_threads

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

Android RAMコンソールを作成し、RAMの最後のカーネルメッセージバッファをRAMに保存しようとします(電源が出ないと仮定して)。このファイルには、PROCインタフェースを介して、システム上でWorld Symeable:

cat /proc/last_kmsg
.

詳細についてはカーネルコード@ドライバ/ステージング/ Android / RAM_Console.c

Androidのシャットダウンログを収集する類似問題に直面しました。私はこの質問を長く投稿しました、そしてそれは2つのアプローチを持っています。私は第1のものが私のためにうまくいかないように私は2番目のものを使います。これが質問

です

Androidストアのシャットダウンログはどこにありますか?

これが役立つことを願っています。

Linuxカーネルログには、dmesgコマンドでアクセスできます。Androidロギングシステムここで読むことができます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top