Memory leaks 使用静态分析工具检查Linux设备驱动程序中的空指针和内存泄漏

Memory leaks 使用静态分析工具检查Linux设备驱动程序中的空指针和内存泄漏,memory-leaks,linux-kernel,static-analysis,device-driver,null-pointer,Memory Leaks,Linux Kernel,Static Analysis,Device Driver,Null Pointer,我想使用静态分析工具来检测Linux设备驱动程序(Linux-3.17.2)中的空指针解引用和内存泄漏 我试过一些工具: 叮当声静态分析仪 它显示一些不重要的警告,例如“在初始化过程中存储到‘usbhid’的值永远不会被读取” Smatch和Cppcheck 他们发现了一些缺陷,但维护人员或我自己发现的许多空指针解引用无法检测到 您能推荐一些其他有用的静态工具来检测Linux设备驱动程序中的真正bug吗?以下是一些可用的工具。这取决于你是寻找“免费”工具还是商业工具,它给了你一个很好的概述。另外

我想使用静态分析工具来检测Linux设备驱动程序(Linux-3.17.2)中的空指针解引用和内存泄漏

我试过一些工具:

  • 叮当声静态分析仪
    它显示一些不重要的警告,例如“在初始化过程中存储到‘usbhid’的值永远不会被读取”
  • Smatch和Cppcheck 他们发现了一些缺陷,但维护人员或我自己发现的许多空指针解引用无法检测到
  • 您能推荐一些其他有用的静态工具来检测Linux设备驱动程序中的真正bug吗?

    以下是一些可用的工具。这取决于你是寻找“免费”工具还是商业工具,它给了你一个很好的概述。另外一种可能性是,开源项目可以在哪里应用,并从coverity获得免费扫描

    其他意见包括:

    • 编译器本身(不同的选项,如-Wall-Wextra)
    • 不是静态检查程序,但值得一试

    不久前,PVS Studio发布了一份关于Linux 3.18.1的检查报告。搜索内存泄漏是他们的爱好;他们非常善于寻找印刷错误。尽管如此,他们还是发现了bug,我决定在这里提及这篇文章。顺便说一下,他们有很多关于搜索的文章-。

    谢谢!我试过你提到的一些工具。Splint、Failinder和UNO不能直接用于Linux设备驱动程序,因为会出现一些解析错误。Smatch和sparse被我使用过。但它们并没有显示出很好的效果。Valgrind可以直接为驾驶员工作吗?我知道它可以用于应用。