Сбой в режиме ядра может потенциально повредить структуры данных в любом месте в памяти, даже сам отладчик.Сделать пуленепробиваемое сложно.
В обычной отладке у вас есть два полностью изолированных процесса - отладчик и то, что вы отлаживаете.Они "сверстники", созданные равными.Отлаживаемый процесс не может касаться отладчика, независимо от того, что он делает (и, вероятно, даже не знает, что он существует).С другой стороны, отладчик может взаимодействовать с отлаживаемым процессом фиксированными, предсказуемыми способами, которые всегда применимы ко всем обычным пользовательским процессам.
Пример: как бы вы отлаживали интерфейс клавиатуры, если это локальная отладка, иликод RS232, если это через последовательный порт?Драйвер сетевого адаптера или сетевой стек, если он подключен к сети?Установка точки останова в одном из них будет невосстановимой, поскольку вы потеряете доступ к устройству, управляющему отладчиком.В худшем случае, как бы вы отлаживали отладчик ядра?С GDB вы можете, по крайней мере, теоретически присоединить экземпляр GDB к другому экземпляру GDB без особых проблем.В пространстве ядра это просто невозможно, потому что нет уровня выше, чтобы опосредовать вещи.