首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置cppcheck以检测linux源代码中的内存泄漏

问如何配置cppcheck以检测linux源代码中的内存泄漏
EN

Stack Overflow用户
提问于 2014-10-10 00:41:38
回答 2查看 4K关注 0票数 1

我想尝试一些开源的静态分析工具来检查它们在检测linux源代码泄漏方面的性能。在linux中,大部分内存分配调用都是通过kmalloc()、kzalloc()等函数进行的,相应的空闲函数是kfree()。我如何配置cppchecker来跟踪kmalloc调用,而不是默认的malloc()调用?有一个叫做创建新配置文件的东西,我们可以在这里定义用户首选项,但我不知道如何做到这一点。

另外,作为对上述问题的跟进,cppcheck是否执行内存泄漏检测的过程间分析?我还可以使用哪些其他开源静态分析工具来实现这个目的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-10 10:15:02

我是个Cppcheck开发人员。

诚然,对于kmalloc等有一些老的内置处理。一个好的开始是使用内置知识检查内核。不需要cfg文件。

但是,使用cfg文件,您可以增强cppcheck。

以下是一个开始:

代码语言:javascript
复制
<?xml version="1.0"?>
<def format="1">
    <memory>
        <dealloc>kfree</dealloc>
        <alloc init="false">kmalloc</alloc>
        <alloc init="true">kzalloc</alloc>
    </memory>
</def>

将该文本保存在一个名为kernel.cfg的文件中,然后使用--库=内核在cppcheck分析期间使用该信息。

在这个cfg里有很多缺失的信息。如果你使用它主要不需要返回有关函数的信息,也不需要返回函数的“泄漏-忽略”信息。

您可以查看官方的std.cfg文件,例如strcmp()的配置。此配置明确表示strcmp()不返回。配置还有一个“泄漏-忽略”属性,因为如果您可以将指向分配内存的指针传递给strcmp(),那么泄漏检查器应该忽略这一点,因为strcmp()不会导致任何取消分配等等。

如果你对它的工作方式有疑问,请告诉我们。

票数 3
EN

Stack Overflow用户

发布于 2014-10-10 04:06:41

您确定cppcheck还不能检查内核分配漏洞吗?源代码看起来非常像对待kmalloc等等,就像malloc一样。例如,查看cppcheck存储库中的testmemleak.cpp文件,您就会看到使用一个不好的kmalloc的测试用例。

就过程间分析而言,我不认为cppcheck能做到这一点。我推测GCC也许能够在-flto旗帜的基础上做点什么,但我不是专家。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26290198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档