機械翻訳について

7 Pythonでのdrgnライブラリの使用

drgnライブラリをインポートして、ライブ・カーネルおよびvmcoreクラッシュ・ダンプをPythonシェルおよびPythonスクリプトでデバッグします。

Pythonスクリプトでdrgnの使用を開始する前に、Pythonがシステムに正しくインストールされていることを確認してください。 詳細は、Oracle Linux 10 Pythonのインストールと管理を参照してください。

スクリプトがPython 3.12で実行されている場合は、drgnパッケージもインストールします。 詳細は、「drgnのインストール」を参照してください。

crashユーティリティとは異なり、drgnはもともとスタンドアロンのカーネル・デバッグ・ツールとして設計されていませんでした。 drgnは、スクリプトおよびレビューの目的でデバッグ情報を公開するPythonプログラミング・ライブラリです。

  1. prog配列変数には、デバッグするカーネルに関する情報が含まれています。 たとえば、slab_cachesに対して収集されたデータを返すには、drgnシェルで次の文を実行します:
    prog["slab_caches"]
    (struct list_head){
            .next = (struct list_head *)0xffff8b831d972260,
            .prev = (struct list_head *)0xffff8b8007c02060,
    }
  2. 標準python構造体を使用して、デバッグ情報を繰り返し処理することもできます:
    slab_caches = prog["slab_caches"]
    slab_caches.next
    *(struct list_head *)0xffff8b831d972260 = {
            .next = (struct list_head *)0xffff8b831d972460,
            .prev = (struct list_head *)slab_caches+0x0 = 0xffffffff836e3da0,
    }
  3. drgn APIおよびスクリプト構文の詳細は、https://drgn.readthedocs.io/を参照してください。 または、Pythonシェルで次のコマンドを実行します:
    help(drgn)

Pythonスクリプトにより、カーネル・デバッグ情報とクラッシュ・データの配列がロードされました。