2013-04-17 3 views
2

Я новичок в ядре linux. блуждает, как просматривать полный поток, прямо от источника питания процессора. Основная идея кода BIOS/ROM.Какой инструмент для отладки ядра Linux?

Могу ли я найти инструмент для отладки полного ядра? или предпочтительный просмотр исходного кода?

+0

Читайте также http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html и http://www.linuxhomenetworking.com/wiki/index .php/Quick_HOWTO _: _ Ch07 _: _ The_Linux_Boot_Process –

+0

действительно ли это соответствует последнему ядру? – San

+0

Возможно, да. Почему бы и нет? –

ответ

2

Если вы намерены понимать весь поток ядра Linux, запуск ядра Linux на QEMU может быть простым способом узнать, как работает Linux. Особенно вы можете эмулировать многие типы CPU без реального H/W. или как насчет user mode Linux?

This document может быть полезным для отладки ядра на QEMU.

0

Просто добавляя, ядро ​​Linux не очень подходит для отладки. Линус Торвальдс однажды заявил, что он снова поддерживает отладку ядра в Linux, потому что это приводит к плохо написанному коду. Я использовал kdbg, однако я не нашел его очень полезным, я предлагаю отлаживать ядро ​​методом oldschool, используя printk.

2

Следующие инструменты могут помочь вам отладить Linux ядра

Dynamic Probes является одним из популярных инструментов отладки для Linux, который разработанный IBM. Этот инструмент позволяет размещать «зонд» практически в любом месте в системе, как в пространстве пользователя, так и в ядре. Зонд состоит из некоторого кода (написанного на специализированном языке, ориентированном на стек), который выполняется, когда управление попадает в данную точку. Ресурсы о DProbes/Kprobes перечислены ниже

Linux Trace Toolkit - это патч ядра и набор связанных утилит, которые позволяют отслеживать события в ядре. Трассировка включает в себя информацию о времени и может создать достаточно полную картину того, что произошло за определенный период времени. Ресурсы LTT, LTT просмотра и LTT Next Generation

MEMWATCH является открытым инструментом обнаружения ошибок источника памяти. Он работает, определяя MEMWATCH в инструкции gcc и добавляя заголовочный файл к нашему коду. Благодаря этому мы можем отслеживать утечки памяти и повреждение памяти.Ресурсы, касающиеся MEMWATCH

ftrace является хорошей основой для трассировки ядра Linux. ftrace отслеживает внутренние операции ядра. Этот инструмент включен в ядро ​​Linux в 2.6.27. Благодаря своим различным плагинам трассировки ftrace может быть нацелена на различные статические точки трассировки, такие как планирование событий, прерываний, преобразований ввода-вывода с памятью, переходов состояния процессора и операций, связанных с файловыми системами и виртуализацией. Кроме того, доступно динамическое отслеживание вызовов функций ядра, опционально ограничиваемое подмножеством функций с помощью глобусов, а также возможность генерации графиков вызовов и обеспечения использования стека. Вы можете найти хороший учебник по ftrace по адресу https://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_rostedt.pdf

ltrace - утилита для отладки в Linux, используемая для отображения вызовов, которые приложение пользовательского пространства делает для разделяемых библиотек. Этот инструмент можно использовать для отслеживания любого вызова динамической библиотеки. Он перехватывает и записывает вызовы динамической библиотеки, вызываемые выполненным процессом, и сигналы, полученные этим процессом. Он также может перехватывать и распечатывать системные вызовы, выполняемые программой.

KDB является отладчик в ядре ядра Linux. KDB следует за упрощенным интерфейсом в стиле оболочки. Мы можем использовать его для проверки памяти, регистров, списков процессов, dmesg и даже установки точек останова для остановки в определенном месте. Через KDB мы можем установить контрольные точки и выполнить некоторое базовое управление запуском ядра (Хотя KDB не является отладчиком исходного уровня). Несколько удобных ресурсов относительно KDB

KGDB предназначен для использования в качестве отладчика уровня источника для ядра Linux. Он используется вместе с gdb для отладки ядра Linux. Для использования kgdb требуются две машины. Одна из этих машин - машина для разработки, а другая - целевая машина. Ядро для отладки выполняется на целевой машине. Ожидается, что gdb можно использовать для «взлома» ядра для проверки памяти, переменных и просмотра информации о стеке вызовов, аналогичной тому, как разработчик приложения будет использовать gdb для отладки приложения. Можно разместить точки останова в коде ядра и выполнить некоторое ограниченное выполнение шага. Несколько удобных ресурсов относительно KGDB

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