あなたが得る過去ログを見ているため、コマンド
log stream --process 0
を使用してローカルカーネルのログを「ライブ」、代わりにlog show
を使用することができ、例えば:その
log show --predicate 'processID == 0' --last 1h | less
どれもかなりのお手伝いをしませんしかし、カーネルパニックは、ユーザ空間でロギングが非同期的に発生するため、パニックの前に最後のメッセージを得ることはありません。あなたはおそらくすでにの認識しているが、私は完全酒のためにそれらを言及しますファイヤワイヤなしKPSをデバッグするための、より
いくつかのオプション、:
- イーサネットベースのカーネルデバッグ(ファイヤワイヤではなく) 。テストデバイスだけが有線/雷ソケットのイーサネットを必要とするため、デバッガを実行しているMacはWi-Fiに接続できます。
- パニックログ自体からかなりの情報を抽出することができます:スタックを象徴することに加えて(
keepsyms=1
boot-argを使用するので、遡及的に行う必要はありません)、レジスタの内容と分解を見ることができます多くの場合、変数の値がわかります。
- アップルのコードにスタックトレースの一部がない場合は、リリース1ではなくデバッグまたは開発用カーネルを実行してください。それらはより少ない最適化を可能にしてビルドされているので、関数はインライン化される可能性が低くなります。
- カーネルで有効にできるメモリデバッグとその他の診断オプションがあります。
-zp
,-zc
など。
- VM(VMWare Fusion、Parallels、VirtualBox、KVM/Qemuなど)のクラッシュを再現できる場合は、VMのシミュレートしたシリアルポートを使用してkprintf出力を記録できます。仮想イーサネットポートは、それらを正しく設定すると、カーネルのデバッグをサポートする傾向があります。
ありがとうございました!申し訳ありませんが、私はあなたの答えを受け入れるのにとても時間がかかった。 –