Synchronize with English 1.27:
Update the information about building a debugging kernel. Remove the individual steps, and replace with "make install". Update the following note to explain that kernel is installed, while kernel.debug remains as a source of debugging symbols for gdb(1). Minor reformatting.
This commit is contained in:
parent
71a397515b
commit
3eb28c4858
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=6222
1 changed files with 63 additions and 105 deletions
|
|
@ -10,7 +10,7 @@
|
|||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>$FreeBSD: doc/ru_RU.KOI8-R/books/faq/book.sgml,v 1.22 1999/11/27 10:48:51 andy Exp $</pubdate>
|
||||
<pubdate>$FreeBSD: doc/ru_RU.KOI8-R/books/faq/book.sgml,v 1.23 1999/12/16 05:00:43 andy Exp $</pubdate>
|
||||
|
||||
<abstract><para>Этот документ является так называемым FAQ (Frequently Asked
|
||||
Questions), то есть списком Часто Задаваемых Вопросов по FreeBSD версий 2.X
|
||||
|
|
@ -8946,12 +8946,10 @@ Cc: current@FreeBSD.org
|
|||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
|
||||
|
||||
|
||||
<para>Зачастую люди приводят подобные аварийные сообщения, на редко кто
|
||||
утруждается привести соотвествие указателя инструкций с функцией в
|
||||
таблице символов ядра.</para>
|
||||
утруждается привести соотвествие указателя инструкций с функцией в
|
||||
таблице символов ядра.</para>
|
||||
|
||||
<para>Лучшим способом выяснить причину, вызвавшую аварийный останов, является
|
||||
создание аварийного дампа системы, а затем использование
|
||||
|
|
@ -8965,112 +8963,72 @@ Cc: current@FreeBSD.org
|
|||
<para>Во всяком случае, обычно я использую такой способ:</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Отредактируйте конфигурационный файл ядра, добавив строку
|
||||
'options DDB', если вам зачем-то понадобился встроенный отладчик.
|
||||
(Я использую его в основном для указания точек останова, если
|
||||
подозреваю возникновение бесконечных циклов.)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Отредактируйте конфигурационный файл ядра, добавив строку
|
||||
'options DDB', если вам зачем-то понадобился встроенный отладчик.
|
||||
(Я использую его в основном для указания точек останова, если
|
||||
подозреваю возникновение бесконечных циклов.)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Выполните <command>config -g KERNELCONFIG</command> для создания
|
||||
каталога построения ядра.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Выполните <command>config -g KERNELCONFIG</command> для создания каталога
|
||||
построения ядра.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><command>cd /sys/compile/KERNELCONFIG; make</command></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><command>cd /sys/compile/KERNELCONFIG; make</command>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Дождитесь окончания компиляции ядра.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Дождитесь окончания компиляции ядра.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><command>make install</command></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><emphasis remap=tt>cp kernel kernel.debug</emphasis>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><command>strip -d kernel</command>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><emphasis remap=tt>mv </emphasis>kernel /kernel.orig/
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><command>cp kernel /</command>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>reboot
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
<listitem>
|
||||
<para>reboot</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
|
||||
|
||||
<para><emphasis>[Замечание: Так как теперь ядра FreeBSD 3.x по умолчанию
|
||||
имеют формат Elf, вы должны использовать команду <command>strip -g</command>
|
||||
вместо <command>strip -d</command>]. Если по какой-то причине ваше ядро всё ещё
|
||||
имеет формат a.out, используйте команду <command>strip -aout -d</command>.]</emphasis></para>
|
||||
|
||||
|
||||
|
||||
<para>Заметьте, что ВАМ <emphasis>НЕ</emphasis> НУЖНО ЗАГРУЖАТЬ ЯДРО С ОТЛАДОЧНОЙ
|
||||
ИНФОРМАЦИЕЙ. Ядро, откомпилированное с ключом <option>-g</option>, может
|
||||
занимать порядка 10МБ. Вам не нужно загружать этот огромный образ:
|
||||
он вам пригодится позже для <command>gdb(1)</command> (а <command>gdb(1)</command> требует
|
||||
таблицу имён). Вместо этого просто сохраните полный образ и создайте
|
||||
ещё один, удалив отладочную информацию командой <command>strip -d</command>. Именно
|
||||
этот образ вам и нужен для загрузки.</para>
|
||||
|
||||
|
||||
|
||||
<para>Чтобы включить сброс аварийного дампа, вам нужно отредактировать
|
||||
файла <filename>/etc/rc.conf</filename>, чтобы <emphasis remap=tt>dumpdev</emphasis> указывало на раздел
|
||||
подкачки. В этом случае скрипты <command>rc(8)</command> будут вызывать команду
|
||||
<command>dumpon(8)</command> для включения создания аварийных дампов. Вы можете
|
||||
запустить команду <command>dumpon(8)</command> вручную. После аварийной остановки
|
||||
аварийный дамп может быть получен с помощью программы
|
||||
<command>savecore(8)</command>; если значение переменной <emphasis remap=tt>dumpdev</emphasis> было
|
||||
установлено в <filename>/etc/rc.conf</filename>, скрипты <command>rc(8)</command> запустят
|
||||
<command>savecore(8)</command> автоматически и поместят аварийный дамп в каталог
|
||||
<filename>/var/crash</filename>.</para>
|
||||
|
||||
|
||||
|
||||
|
||||
<para>В процессе выполнения команды &man.make.1; будут построены два ядра,
|
||||
<filename>kernel</filename> и <filename>kernel.debug</filename>.
|
||||
<filename>kernel</filename> будет установлен как
|
||||
<filename>/kernel</filename>, тогда как <filename>kernel.debug</filename>
|
||||
может быть использован в качестве источника отладочной информации для
|
||||
gdb(1).</para>
|
||||
|
||||
<para>Чтобы включить сброс аварийного дампа, вам нужно отредактировать файл
|
||||
<filename>/etc/rc.conf</filename> так, чтобы устройство
|
||||
<emphasis remap=tt>dumpdev</emphasis> указывало на раздел подкачки. В этом
|
||||
случае скрипты <command>rc(8)</command> будут вызывать команду
|
||||
<command>dumpon(8)</command> для включения создания аварийных дампов. Вы
|
||||
можете запустить команду <command>dumpon(8)</command> вручную. После
|
||||
аварийной остановки аварийный дамп может быть получен с помощью программы
|
||||
<command>savecore(8)</command>; если значение переменной
|
||||
<emphasis remap=tt>dumpdev</emphasis> было установлено в
|
||||
<filename>/etc/rc.conf</filename>, скрипты <command>rc(8)</command> запустят
|
||||
<command>savecore(8)</command> автоматически и поместят аварийный дамп в
|
||||
каталог <filename>/var/crash</filename>.</para>
|
||||
|
||||
<para>ЗАМЕЧАНИЕ: аварийные дампы FreeBSD обычно имеют размер, равный
|
||||
физическому объёму оперативной памяти вашей машины. Так что если
|
||||
у вас 64МБ ОЗУ, вы получите дамп размером 64МБ. Поэтому вы должны
|
||||
удостовериться, что в каталоге <filename>/var/crash</filename> достаточно места
|
||||
для хранения дампа. Либо вы можете вручную запустить <command>savecore(8)</command>
|
||||
и создать аварийный дамп в другом каталоге, где достаточно места.
|
||||
Размер аварийного дампа можно уменьшить, указав в конфигурации
|
||||
ядра <literal>options MAXMEM=(размер)</literal> подходящее значение для объёма
|
||||
памяти, которое будет использоваться ядром. Например, если у вас
|
||||
128 МБ ОЗУ, вы можете ограничить использование памяти ядром 16
|
||||
мегабайтами, так что размер аварийного дампа будет равен 16МБ, а
|
||||
не 128.</para>
|
||||
|
||||
|
||||
|
||||
<para>Как только вы получили аварийный дамп, вы можете выполнить
|
||||
трассировку вызовов с помощью <command>gdb(1)</command> таким образом:</para>
|
||||
|
||||
|
||||
|
||||
физическому объёму оперативной памяти вашей машины. Так что если у вас 64МБ
|
||||
ОЗУ, вы получите дамп размером 64МБ. Поэтому вы должны удостовериться, что
|
||||
в каталоге <filename>/var/crash</filename> достаточно места для хранения
|
||||
дампа. Либо вы можете вручную запустить <command>savecore(8)</command>
|
||||
и создать аварийный дамп в другом каталоге, где достаточно места. Размер
|
||||
аварийного дампа можно уменьшить, указав в конфигурации ядра
|
||||
<literal>options MAXMEM=(размер)</literal> подходящее значение для объёма
|
||||
памяти, которое будет использоваться ядром. Например, если у вас
|
||||
128 МБ ОЗУ, вы можете ограничить использование памяти ядром 16 мегабайтами,
|
||||
так что размер аварийного дампа будет равен 16МБ, а не 128.</para>
|
||||
|
||||
<para>Как только вы получили аварийный дамп, вы можете выполнить трассировку
|
||||
вызовов с помощью <command>gdb(1)</command> таким образом:</para>
|
||||
|
||||
<para>
|
||||
<literallayout>% gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0
|
||||
(gdb) where
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue