2017-06-21 3 views

答えて

1

私はkextから直接シンボリックなスタックトレースを印刷する方法を知らない。 nvram変数boot-argskeepsyms=1を追加することにより、パニックログの記号化を得ることができます。私はこれのためのデータ構造がプライベートなリンケージを持っていると思うので、おそらくあなた自身のkextでシンボル化されたパニックコードを複製することはできません。 (試したい場合はxnuソースのosfmk/i386/AT386/model_dep.cにあります)

また、OSReportWithBacktraceの出力をatosコマンドラインツールから送信することもできます。 kextシンボルの場合は、kextのロードアドレスをkextstatから見つけて、-lコマンドライン引数に渡す必要があります。

最後に、lldbカーネルデバッグを使用してスタックトレースを取得できます。初期のkextのロード中にブレークポイントを設定する必要がある場合は、lldbコマンドラインから実行する前に、デバッガに侵入させたいコードに__asm__("int $3")(IIRC)を挿入することができます。

関連する問題