2015-10-26 4 views

ответ

2

Где найти основной файл?

Основные файлы - это концепция пространства пользователя.

Я хочу использовать gdb и посмотреть, в чем проблема.

Возможно, вы ищете KGDB и/или Kdump/Kexec.

0

не будет основного файла. Вы должны следить за трассировкой стека в сообщениях ядра. типа dmesg, чтобы увидеть его.

0

Обычно, всякий раз, когда генерируется coredump, он будет указывать «ядро сбрасывается». Это может быть один высокий уровень простой способ подтвердить, был ли coredump создан, однако, это заявление само по себе не может гарантировать доступность файла coredump. Место, где генерируется coredump, определяется через core_pattern в ядро ​​через sysctl. Вам нужно проверить информацию, присутствующую в core_pattern вашей системы. Также обратите внимание, что в случае Ubuntu, по-видимому, размер файла coredump по умолчанию остается равным нулю, что позволит избежать генерации coredump. Таким образом, вам может потребоваться проверить размер файла ulimit и изменить его на «ulimit -c unlimited», если он равен нулю. В справочной системе http://man7.org/linux/man-pages/man5/core.5.html объясняются различные причины, из-за которых coredump не генерируется.

Однако, из вашего объяснения, похоже, что вы столкнулись с «ядро упс», поскольку ядро ​​по-прежнему находится в состоянии (нестабильное состояние), хотя определенный модуль получил панику/убит. В таких случаях ядро ​​должно печатать сообщение oops. См. Ссылку https://www.kernel.org/doc/Documentation/oops-tracing.txt, которая содержит информацию о сообщениях oops ядра.

Аннотация по ссылке: Обычно текст Упс считывается из буферов ядра по Klogd и врученных SyslogD, который записывает его в системный файл, как правило, /Var/Журнал/сообщения (зависит от/и т.д./syslog.conf). Иногда klogd умирает, и в этом случае вы можете запустить файл dmesg> для чтения данных из буферов ядра и сохранить его. Или вы можете использовать файл cat/proc/kmsg>, однако вам нужно перерыть, чтобы остановить передачу, kmsg является «никогда не заканчивающимся файлом».

printk используется для генерации сообщений oops. printk выполняет маркировку строгости с помощью разных логарифмов/приоритетов и позволяет классифицировать сообщения в зависимости от их серьезности. (Различные приоритеты определяются в файле linux/kernel.h или linux/kern_levels.h в виде макросов, таких как KERN_EMERG, KERN_ALERT, KERN_CRIT и т. Д.). Таким образом, вам может потребоваться проверить уровни регистрации по умолчанию в системе, используя cat/proc/sys/kernel/printk и изменить его согласно вашему требованию. Кроме того, проверьте, установлены ли демоны регистрации и вы хотите отлаживать ядро, убедитесь, что ядро ​​скомпилировано с CONFIG_DEBUG_INFO.

Метод использования GDB, чтобы найти место, где ядро ​​запаниковал или oopsed в убунту в ссылке https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks, который может быть одним из методов, которые могут быть использованы вами для отладки ядра Oops.

Смежные вопросы