KGDBは、 Linuxカーネル、 NetBSDカーネル、およびFreeBSDカーネル用のデバッガです。シリアル接続で接続された2台のマシンが必要です。シリアル接続は、ヌルモデムケーブルを使用したRS-232インターフェース、またはUDP /IPネットワークプロトコル(イーサネット経由のKGDB、KGDBoE)のいずれかです。ターゲットマシン(デバッグ対象マシン)ではパッチ適用済みのカーネルを実行し、もう一方のマシン(ホストマシン)ではgdbを実行します。2台のマシン間ではGDBリモートプロトコルが使用されます。
KGDBは1997年にNetBSDカーネルの一部として実装され[ 1 ] 、FreeBSDではバージョン2.2で実装されました。その概念と既存のリモートgdbプロトコルは、後にLinuxカーネルへのパッチとして採用されました。Linuxパッチの縮小版は、バージョン2.6.26で公式Linuxカーネルに統合されました。
KGDBは、Linux上でIA-32、x86-64、PowerPC、ARM、MIPS、ESA/390の各アーキテクチャに対応しています。また、NetBSDおよびFreeBSDでは、RS-232接続のみを使用して、サポートされているすべてのアーキテクチャで利用可能です。
Amit Kale は 2000 年から 2004 年まで Linux KGDB を保守しました。[ 2 ] [ 3 ] 2004 年から 2006 年までは Linsyssoft Technologies が保守し、その後 Wind River Systems, Inc. の Jason Wessel が公式の保守担当者として引き継ぎました。Ingo Molnarと Jason Wessel は、KGDB の軽量化およびクリーンアップされたバージョンである「kgdb light」(イーサネット サポートやその他の多くのハックなし)を作成しました。これが 2.6.26 カーネルに統合されたものです。[ 4 ]このバージョンの kgdb は、RS-232 接続のみをサポートし、デバッガ入力とコンソール入力を分離できる特別なドライバを使用して、単一のシリアル ポートのみを必要とします。
FreeBSDでは kgdb というプログラムも使用されています。これは、カーネル コア ファイルのデバッグ用の gdb ベースのユーティリティです。[ 5 ]また、シリアル接続または Firewire リンクを介して、Linux の KGDB とほぼ同じように、リモートの「ライブ」カーネル デバッグにも使用できます。[ 6 ]