Последовательный порт
Последовательный порт - это простой низкоуровневый механизм связи между компьютерами.
Преимущества:
- простая настройка один раз (если у вас есть оборудование)
- надежный, поскольку передача данных зависит только от простых проводов и API ядра, которые менее подвержены панике, чем, скажем, подсистема TCP / IP.
Недостатки:
- У большинства современных ноутбуков нет последовательного порта (выставленного?) для экономии места. Но рабочие столы и виртуальные машины все еще делают.
- вам также понадобится второй компьютер с последовательным портом для получения данных, но это касается практически всех встроенных плат разработки, таких как Raspberry Pi.
- ограничено длиной последовательного кабеля физического уровня, в отличие от сетей TCP / IP, которые не ограничены. Однако это можно обойти с помощью устройства, которое взаимодействует между последовательным и TCP / IP. Но есть устройства, которые конвертируют между ними.
Последовательный порт выглядит так:
и на RPI доступен через GPIO.
Затем, если у вас есть необходимое оборудование, подключитесь со второго компьютера к основному компьютеру с помощью:
screen /dev/ttyS0 115200
Это на самом деле дает вам оболочку.
Затем на главном компьютере запустите операцию, которая паникует.
Когда возникает паника, дамп паники перенаправляется на второй компьютер, и вы можете увидеть все это, прокрутив вверх по терминалу.
Другие методы
Существуют также другие методы, которые преодолевают аппаратные ограничения, упомянутые выше, за счет того, что они являются более сложными и менее надежными. Известные методы:
- netdump: передает панику по TCP / IP. Полагается, что подсистема TCP / IP не повреждена.
- Кажется, kdump: основной механизм linux-crashdump, упомянутый по адресу: https://askubuntu.com/a/104793/52975 Загружает второе ядро Linux для проверки разбившегося ядра. Что возможно могло пойти не так?! :-)
Смотрите также этот отличный ответ: https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic
Пошаговая отладка
В конечном счете, получение вывода о панике требует, чтобы некоторые функциональные возможности ядра работали, и любая функциональность ядра могла быть повреждена паникой.
Но кому нужна паника, если вы можете использовать GDB в ядре? Если вы хардкор, взгляните на:
Каждая проблема падает, когда у вас есть полная видимость (и достаточно времени!).