Часто Задаваемые Вопросы по FreeBSD 2.X, 3.X, 4.X и 5.X


Что делать при аварийном остановах системы - часть 2


Если вы не получили точного соответствия, опустите последнюю цифру в значении указателя инструкций и попробуйте снова, то есть:

% nm -n /kernel.that.caused.the.panic | grep f0xxxxx

Если и это не привело ни к каким результатам, отрежьте следующую цифру. Повторяйте, пока не получите хоть что-то. Результатом будет список функций, которые, возможно, привели к аварийному останову. Этот механизм обнаружения ошибочного места довольно неточен, но это всё же лучше, чем ничего.


Зачастую люди приводят подобные аварийные сообщения, на редко кто утруждается привести соответствие указателя инструкций с функцией в таблице символов ядра.

Лучшим способом выяснить причину, вызвавшую аварийный останов, является получение аварийного дампа системы, а затем использование gdb(1) для получения трассировки вызовов в этом дампе.

Во всяком случае, обычно я использую такой способ:

  1. Отредактируйте конфигурационный файл ядра, добавив строку options DDB, если вам зачем-то понадобился встроенный отладчик. (Я использую его в основном для указания точек останова, если подозреваю возникновение бесконечных циклов.)

  2. Выполните config -g KERNELCONFIG для создания каталога построения ядра.

  3. cd /sys/compile/KERNELCONFIG; make

  4. Дождитесь окончания компиляции ядра.

  5. make install

  6. reboot

В процессе выполнения команды make(1) будут построены два ядра, kernel и kernel.debug. kernel будет установлен как /kernel, тогда как kernel.debug может быть использован в качестве источника отладочной информации для gdb(1).

Чтобы включить сброс аварийного дампа, вам нужно отредактировать файл /etc/rc.conf так, чтобы устройство dumpdev указывало на раздел подкачки. В этом случае скрипты rc(8) будут вызывать команду для включения создания аварийных дампов. Вы можете запустить команду dumpon(8) вручную. После аварийной остановки аварийный дамп может быть получен с помощью программы savecore(8) если значение переменной dumpdev было установлено в /etc/rc.conf, скрипты rc(8) запустят savecore(8)

автоматически и поместят аварийный дамп в каталог /var/crash.




Начало  Назад  Вперед