在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