Jenkins插件----Valgrind

Valgrind简介

Valgrind是一个未知行为检测工具,可以用来检测你的C/C++程序是否存在异常行为,包括函数和内存分析、数据竞争条件侦测、内存泄露检查等。

Valgrind包括如下一些工具:

  • Memcheck,这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化            的内存,使用已经释放了的内存,内存访问越界等。这也是本文将重点介绍的部分。
  • Callgrind,它主要用来检查程序中函数调用过程中出现的问题。
  • Cachegrind,它主要用来检查程序中缓存使用出现的问题。
  • Helgrind,它主要用来检查多线程程序中出现的竞争问题。
  • Massif,它主要用来检查程序中堆栈使用中出现的问题。
  • Extension,可以利用core提供的功能,自己编写特定的内存调试工具

Jenkins里面的插件支持MemcheckHelgrind

Valgrind安装

这个比较简单,一般都是系统自带的,当然你也可到官网下载。

这里不演示了。

Jenkins操作

安装Jenkins插件

在插件商店里搜素、安装后,启用:

增加构建步骤—Run Valgrind

在“增加构建步骤”中,下拉选择“Run Valgrind”:

参数设置

设置配置参数,如下图:

各参数的解释如下:

Executable Include Pattern,需要分析的可执行文件,填写”*”则匹配当前目录下的所有文件。
Executable Exclude Pattern,排除的可执行文件,参数构建时,该值不传的话会默认为“*”,可填写“1”。
Executable Arguments, 启动可执行程序时的输入参数
Working Directory, 工作目录(这个变量暂时不知道什么用途,程序默认会扫当前工程目录下的可执行文件)
Output Directory, 结果输出目录,会在工程目录下生成该目录。
File Ending,      结果文件的后缀,如:最终结果会输出到 xxxx.result 文件中。
Valgrind Tool,    这个版本只有2个工具,memcheck和Helgrind。

选memcheck工具时,有几个选项: 

 这一步默认即可。

增加构建后步骤

这一步需要将memcheck之后的结果文件进行展示,配置如下:

构建项目  

上述参数需按照实际情况填写。

从控制台日志中提取运行的指令:

线程竞争的:

[Valgrind] working dir: /home/jenkins/workspace/MEM_CHECK/Checking
[Checking] $ valgrind --tool=helgrind --history-level=full --child-silent-after-fork=no --trace-children=yes --gen-suppressions=no --xml=yes --xml-file=/home/jenkins/workspace/MEM_CHECK/dataDealServer.%p.result /home/jenkins/workspace/MEM_CHECK/dataDealServer --config=/usr/local/app/tars/tarsnode/data/billapp.dataDealServer/conf/billapp.dataDealServer.config.conf

内存泄露的:

查看报告

memcheck的:


总结

Valgrind可以帮助我们初步检测代码中存在的内存泄露、死锁等常见问题。将Valgrind与Jenkins结合使用,再配合SCM、编译构建等步骤,可以做到流程自动化,帮助开发者在进入测试阶段之前就发现代码中的漏洞。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员柒叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值