Серійний порт
Послідовний порт - це простий механізм зв'язку між комп'ютерами низького рівня.
Переваги:
- просте налаштування один раз (якщо у вас є обладнання)
- надійний, оскільки передача даних залежить лише від простого 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- why-of-linux-kernel-panic
Крок налагодження
Зрештою, отримання панічного виводу вимагає, щоб якась функціональність ядра працювала, а будь-яка функціональність ядра могла бути пошкоджена панікою.
Але кому потрібна паніка, якщо ви можете використовувати GDB на ядрі? Якщо ви такий хардкор, подивіться на:
Кожна проблема випадає, коли ви маєте повну видимість (і достатньо часу!).