трассировка стека ядра при выполнении определенной команды - PullRequest
0 голосов
/ 06 июля 2011

при вводе команды типа #ifconfig 10.0.0.10 можно увидеть все «возможные» отпечатки внутри ядра.

Я знаю, что что-то вроде echo t> / proc / sysrq-trigger даст вам трассировку стека относительно процессов, запущенных в системе. Что меня интересует, так это в отношении «конкретной команды», как я могу получить выполняемые функции ядра (трассировки стека)?

Я знаю об отладчиках, таких как kgdb, но меня интересуют быстрые способы, такие как sysrq, если таковые имеются.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 05 ноября 2014

Ответ на ваш вопрос "ftrace". Это не инструмент, не команда, а просто функция ядра, встроенная в самое современное ядро ​​Linux.

Например, здесь вы можете использовать ftrace, чтобы понять, как реализовано пространство подкачки (см. Все выполняемые ключевые функции и их последовательность в файлах pastebin, указанных ниже):

http://tthtlc.wordpress.com/2013/11/19/using-ftrace-to-understanding-linux-kernel-api/

Внимательно прочитайте это, и вы увидите, что существует множество способов использования ftrace (один из них - трассировка стека дампов ядра, которую вы запросили, другой - определение потока выполняемых функций):

http://lwn.net/Articles/366796/

Если вы не хотите использовать ftrace, другой вариант - использовать QEMU: необходима установка Linux внутри гостевой системы qemu, и она намного мощнее, так как вы можете использовать gdb для перехода по каждой строке (в C исходный код) или сборка.

https://tthtlc.wordpress.com/2014/01/14/how-to-do-kernel-debugging-via-gdb-over-serial-port-via-qemu/

На всякий случай, если вы хотите продолжить поиск в Google, это называется "kgdb", или gdbserver, и вне qemu вы используете клиент gdb.

2 голосов
/ 06 июля 2011

tail -f /var/log/kern.log должно отображать любое взаимодействие, которое происходит в ядре.
Это более или менее эквивалентно команде dmesg.

1 голос
/ 06 июля 2011

strace ifconfig 10.0.0.10 up покажет все системные вызовы, вызванные ifconfig, но не попадет внутрь вызовов ядра

...