我正在尝试调试显然会导致其他 任务挂起的设备驱动程序。确定性是哪个任务或哪个时间会挂起。内核调试挂起进程?
基本上我从内核收到一些错误消息,说“任务有 被阻塞超过120秒”,以及一些堆栈跟踪。 挂起的任务从sendmail的变化到MKFS到将pdflush(内核线程”。 而在堆栈跟踪中最顶端的功能从改变‘getnstimeofday’ 为‘bio_submit’到‘mark_locks_held’。
我有一个硬因为很难找到 问题,内核提供的堆栈跟踪对 没有太大帮助。根据这些堆栈跟踪,一些挂起进程 甚至没有试图抓住一个锁(就像在我不知道为什么他们挂起。
所以我想知道如果有人有一些想法如何调试这样一个 问题。 kgdb是否会在这里有用,或许通过给我提供什么 点过程挂起,以及它正在等待什么样的锁?
任何建议表示赞赏。
你的内核编译为使用帧指针吗? – Karmastan 2012-02-04 18:38:49
不,不是。它确实有所有的调试选项。 – yangsuli 2012-02-04 18:51:33