【问题标题】:Testing a kernel module测试内核模块
【发布时间】:2016-03-19 18:12:24
【问题描述】:

我对模拟函数和全局变量感兴趣,以便对内核模块进行单元测试。

最初尝试使用https://github.com/ThrowTheSwitch/CMock,但遇到了问题。任何关于如何做到这一点的文章链接也会很棒。 (对于内核模块)。在这里提供更多详细信息:作为内核模块编译会出错,因为 stdio 不可用,为用户空间编译会出错,因为它找不到像 printk 这样的东西。

理想情况下,我将拥有一个用户级可执行文件或一个内核模块,可以对我的函数运行单元测试。我遇到问题的部分是模拟全局依赖项,例如函数所依赖的结构,以便编写一个体面的测试。

我已经查看了几个questionsarticles about this,但没有找到答案,也没有找到明确的原因说明为什么这是不可能的。

【问题讨论】:

    标签: c linux linux-kernel kernel-module


    【解决方案1】:

    我会按照以下方式进行:

    • 实现您的内核模块
    • 定义一个 API 以让用户级程序测试您的模块,该 API 可以基于:
      • /dev/ 中的字符设备(您可以在其中定义适当的 ioctl);
      • /proc/ 中的文件(不鼓励);
      • 特定的系统调用(不鼓励);
      • /sys/ 中的条目
    • 在用户级实现一个程序(以防万一,使用适当的框架,如 CUnitgoogletest),它与测试各种功能的内核模块交互

    【讨论】:

    • 我喜欢这个想法,但是对于已经编写好的代码很难付诸实践。
    猜你喜欢
    • 2013-03-06
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多