我正在开发一个内核模块和一个用户空间应用程序来测试该模块。
问题是在测试过程中我的系统挂起/卡住。
我在代码中放置了很多调试打印。
打印的最后一条消息就在 linux select 之前调用我的用户空间应用程序。 select 是否会以某种方式卡住系统?
那么,我该如何调试问题出在哪里呢?问题是否出在用户空间应用程序或内核模块上?
最佳答案
正如 n.m 提到的,你的用户空间程序无法卡住 Linux,所以它是你的内核模块中的错误。调试此问题的最佳方法是 use a kernel debugger ,并找出你的模块做错了什么。
常见错误是模块传递给内核的未初始化指针或锁定问题,因此请仔细查看这些错误。
关于Linux 如何调试操作系统卡住问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618882/