在linux中转储每个进程堆栈

时间:2014-06-23 06:54:34

标签: process linux-kernel stack-trace

当系统挂起时,我需要在linux内核中转储每个进程堆栈。

我目前正在尝试基于看门狗定时器超时在我的一个内核模块中实现。 每个时间片都由用户守护程序重置监视程序计时器。 当系统挂起时,没有人重置计时器。 因此它会过期并产生中断。 我写了一个中断处理程序,我应该转储每个进程运行的堆栈。

所以,我的问题是如何在内核中转储每个进程的堆栈?

由于 卡塔斯

1 个答案:

答案 0 :(得分:0)

show_state()(include / linux / sched.h)将为您完成此操作。顺便说一句,这个函数已经可以从sysrq处理程序中获得,如果它已经启用,你可以使用它。请参阅Documentation / sysrq.txt

此外,您可以启用一些其他内核调试选项来帮助查找问题。查看make menuconfig中的Kernel Hacking菜单。特别是,CONFIG_LOCKUP_DETECTOR(菜单中的“检测硬锁定和软锁定”)可能会有所帮助。