在键入#ifconfig 10.0.0.10这样的命令时,可以看到内核中所有“可能”的打印。
我知道类似echo t> / proc / sysrq-trigger将为您提供有关系统中运行的进程的堆栈跟踪。 我感兴趣的是,关于“特定命令”,我如何获得执行的内核函数(堆栈跟踪)?
我知道像kgdb这样的调试器,但我对sysrq方法等快速方法很感兴趣。
感谢。
答案 0 :(得分:2)
tail -f /var/log/kern.log
应显示内核中发生的任何交互
它或多或少等同于dmesg
命令。
答案 1 :(得分:2)
你的问题的答案是“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:需要在qemu guest中安装Linux,并且它功能更强大,因为您可以使用gdb逐步执行每一行(在C中)源代码)或汇编。
万一你想进一步谷歌,这被称为“kgdb”,或gdbserver,在qemu之外,你正在运行一个gdb客户端。
答案 2 :(得分:1)
strace ifconfig 10.0.0.10 up
将显示ifconfig调用的所有系统调用,但不会进入内核的调用