在linux中转储每个进程堆栈



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

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

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

谢谢马纳尔

show_state() (include/linux/schedule .h)将为您完成此操作。顺便说一句,这个函数已经可以从sysrq处理程序中获得,如果启用了它,您可能可以使用它。看到文档/sysrq.txt

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

最新更新