原子调试调度

时间:2015-07-21 22:28:24

标签: debugging linux-kernel spinlock

我被分配到另一个人编写的内核模块上工作,我现在没有代码,并且存在“原子调度”错误。

据我所知,这是由在自旋锁防护的关键部分睡觉造成的。

是否有任何可以帮助我找到源的内容 - 睡眠发生的关键部分或睡眠尝试期间获得的自旋锁? (通常任何有关调试自旋锁的好文章的建议都将受到赞赏)。

此致 雷

1 个答案:

答案 0 :(得分:0)

您可以使用Kprobes动态中断任何内核函数:

  1. Kprobes (Kernel probes) documentation
  2. An introduction to Kprobes
  3. 关于Linux中的分析有一篇很好的文章,但它是用俄语写的。

    Mechanisms of profiling in Linux

    此外,用于调试Linux内核模块(LKM)的旧学校是使用printk()函数。

    您可以编写一个宏,它将显示文件名,功能名称,行号。

    我为自己写了一个类似的宏。

    1. Macros for debugging
    2. Example of how to use this macro.
    3. 我希望你在不久的将来解决问题!