カーネルデバッガー

カーネルデバッガは、カーネル開発者によるデバッグとカーネル開発を容易にするために、一部のオペレーティングシステムカーネルに搭載されている デバッガです。カーネルデバッガは、低レベル操作を実装したスタブである場合があり、 GNUデバッガ(gdb)などの本格的なデバッガが別のマシンで実行され、シリアル回線またはネットワーク接続を介してスタブにコマンドを送信します。また、デバッグ対象マシンで直接使用できるコマンドラインを提供する場合もあります。

カーネル デバッガーを含むオペレーティング システムおよびオペレーティング システム カーネル:

  • Windows NTファミリにはKDと呼ばれるカーネルデバッガが含まれています。[ 1 ]これは、限定された機能(カーネルメモリの読み書き、ブレークポイントの設定)を持つローカルデバッガとして機能し、[ 2 ]シリアルライン、IEEE 1394接続、USB 2.0またはUSB 3.0接続を介してリモートマシンに接続できます。[ 3 ] WinDbg GUIデバッガを使用して ローカルマシンとリモートマシン上のカーネルをデバッグすることもできます。
  • BeOSHaikuには、オンスクリーンコンソールまたはシリアル回線経由で使用できるカーネルデバッガが含まれています。メモリ、スレッド、その他のカーネル構造を検査するための様々なコマンドを備えています。Haikuでは、このデバッガは「Kernel Debugging Land」(KDL)と呼ばれています。[ 4 ]
  • ドラゴンフライBSD
  • Linuxカーネル; バージョン2.6.26-rc1より前のLinuxメインラインツリーにはカーネルデバッガは含まれていなかった。これはLinus Torvaldsがカーネルにカーネルデバッガを組み込むことを望んでいなかったためである。[ 5 ] [ 6 ]
  • NetBSD には、ローカル用の DDB とリモート用の KGDB があります。
  • macOSにはローカル用のddbとリモート用のkdpがある。[ 11 ]
  • OpenBSDにはGNUデバッガに似た構文を持つddbが含まれています。[ 12 ]

参考文献

  1. ^ 「デバッグ環境」 . Windows用デバッグツール(WinDbg、KD、CDB、NTSD) . 2020年2月16日閲覧
  2. ^ 「ローカルカーネルモードデバッグ」 。 2020年2月16日閲覧
  3. ^ 「KDを使用したライブカーネルモードデバッグ」 。 2020年1月16日閲覧
  4. ^ 「カーネルデバッグの世界へようこそ」
  5. ^ "LWN.net" . 2008年5月29日閲覧
  6. ^ Torvalds, Linus (2008年5月3日). 「Linux 2.6.26-rc1」 . LWN . 2015年3月9日閲覧
  7. ^ Nellitheertha, Hariprasad. 「Linuxカーネルデバッガーの内部」 IBM . 2008年6月21日時点のオリジナルよりアーカイブ。 2008年5月29日閲覧
  8. ^ “LWN ウィークリー カーネル ニュース” . 2008 年 9 月 7 日。
  9. ^ 「MDB Github Website」 2016年1月1日. 2016年3月22日時点のオリジナルよりアーカイブ
  10. ^ “LWN ウィークリー カーネル ニュース” . 2010 年 6 月 28 日。
  11. ^ Singh, Amit (2003年12月). 「XNU: カーネル」 . What is Mac OS X? . 2020年6月2日時点のオリジナルよりアーカイブ。 2012年5月25日閲覧組み込みの低レベルカーネルデバッガーddbはXNUのMachコンポーネントの一部であり、リモートカーネルデバッグプロトコル実装kdpも同様である。
  12. ^ "ddb(4)" . OpenBSDマニュアルページサーバ. 2019年12月6日. 2019年12月13日閲覧。ddbデバッガは、gdb(1)のような構文でカーネルをデバッグし、システムクラッシュ(「パニック」)後のカーネルを解析する手段を提供します。