在Linux中转储每个进程堆栈

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

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

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

感谢Venkatesh


show_state()(include / linux / sched.h)会为你做这件事。 顺便说一下,这个函数已经可以从sysrq处理程序中获得,如果它被启用,你可以使用它。 请参阅Documentation / sysrq.txt

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

链接地址: http://www.djcxy.com/p/43623.html

上一篇: dump per process stack in linux

下一篇: Linux process scheduling in kernel mode