Linux Kernel debugger

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Linux Kernel debugger

Сообщение aldep »

Мне надо иметь возможность в случае если Linux машина зависнет (насмерть) из-за бага в ядре, иметь возможность прочитать память.
Как я понимаю, сделать kernel dump зависнувшего ядра не получится скорее всего.
Можно ли для этого использовать kernel debugger?
Если да то какой лучше? Я пока видел дебаггеры от Novell и SGI.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: Linux Kernel debugger

Сообщение ajkj3em »

Magic SysReq mozhet pomoch, no po-horoshemu takie dela otlazhivajutsja
starymi dobrymi printf'ami. Na krajnjak, esli visnet ne v hardware irq, to
mozhno na keyboard interrupt povesit' svoj handler i dump'at' stack pri
nazhatii na opredelennuju kombinaciju knopok (ponjatno chto na multi-cpu
machines nado budet dumpat' stek na vseh CPU).

Esli jadro visnet (chto v principe dazhe v processe razrabotki dolzhno
sluchatjsja _krajne_ redko), to proishodit wto obychno po odnoj iz dvuh
prichin - deadlock ili busy loop. Pervye elementarno vylavlivajutsja
perepisyvaniem spinlock_xxx macrosov, vtorye - vuchitkoj koda. Hotja
komu kak udobnee .. komu i debugger nevesta :)

Sorry za translit. Mu***atsja s wtimi idiotskimu TRN tagami netu vremeni.
Аватара пользователя
Groundhog
Графоман
Сообщения: 5099
Зарегистрирован: 20 авг 2005, 16:36
Откуда: Vancouver

Сообщение Groundhog »

Смотря как зависнет а то и никакие примочки не помогут.
Смотря какой процессор и откуда грузишься.
Чтение памяти помогает при отладке девайс драйверов,
когда физические адреса смысл имеют, иначе по таблицам
лазить ухихикаешся.
А если уж память читать хочется - пришпандорь к загрузчику
свою читалку - как кернел неправильный лод операции
словит - в загрузчик переходи и читай/писай на здоровье.
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Сообщение aldep »

Magic SysReq mozhet pomoch, no po-horoshemu takie dela otlazhivajutsja
starymi dobrymi printf'ami.
Я не отлаживаю код, так что фиксить мне актуально. Надо именно наиболее надежным образом прочитать память. Причем память ядра, а не пользовательских процессов.
А если уж память читать хочется - пришпандорь к загрузчику
свою читалку - как кернел неправильный лод операции
словит - в загрузчик переходи и читай/писай на здоровье.
А где-то есть примеры кода?
Аватара пользователя
Groundhog
Графоман
Сообщения: 5099
Зарегистрирован: 20 авг 2005, 16:36
Откуда: Vancouver

Сообщение Groundhog »

"А где-то есть примеры кода?"
Для ARM процессора сам скрябал - легко сделать.
Если интересно найду в своих завалах.
Для X86 не искал не знаю - загрузчик в начале памяти
должен сидеть тогда ему управление и в руки
легко передается (В ARM - ах чуть какая пакость -
автоматически в начало скачет).
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

aldep писал(а):
Magic SysReq mozhet pomoch, no po-horoshemu takie dela otlazhivajutsja
starymi dobrymi printf'ami.
Я не отлаживаю код, так что фиксить мне актуально. Надо именно наиболее надежным образом прочитать память. Причем память ядра, а не пользовательских процессов.
а, понятно, не так понял, сорри

* перевод с транслита
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Сообщение aldep »

Groundhog писал(а):"А где-то есть примеры кода?"
Для ARM процессора сам скрябал - легко сделать.
Если интересно найду в своих завалах.
Интересно. Если не в облом, то найди.

Спасибо!
Аватара пользователя
Groundhog
Графоман
Сообщения: 5099
Зарегистрирован: 20 авг 2005, 16:36
Откуда: Vancouver

Сообщение Groundhog »

В субботу, после возврата с соседской террритории,
закину боотлоадер с читалкой (примитивная но работает :) - да и разбираться в коде легче).
Аватара пользователя
Ильгиз
Пользователь
Сообщения: 55
Зарегистрирован: 13 сен 2005, 12:00
Откуда: Уфа - Китченер

Сообщение Ильгиз »

The Linux Kernel Crash Dump patch to the kernel doesn't read arbitrary memory regions. I could store a kernel crash back trace to a floppy disk.
Ответить