You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中Valgrind结果显示异常问题求助

Jenkins Valgrind插件结果显示异常排查方案

核心问题梳理

在多平台单元测试的Jenkins构建流程中,使用Valgrind memcheck工具生成*.memcheck报告,通过publishValgrind方法配置后,插件仅显示已抑制错误和少量可能泄漏,无法像官网截图那样突出潜在问题;日志仅提示Valgrind源码文件不存在,但本地检查报告文件内容正常。

排查步骤

1. 检查Valgrind报告的抑制规则配置

  • 确认运行Valgrind时是否过度使用默认抑制规则,导致真实泄漏/错误被自动屏蔽。可尝试在memcheck命令中添加--suppressions=no-default.supp(若有自定义抑制文件,替换为对应路径),重新生成报告后再用插件解析。
  • 手动检查*.memcheck文件,确认其中是否包含未被抑制的DefinitelyLost/InvalidRead等条目,若存在但插件未显示,说明插件解析逻辑可能被抑制规则干扰。

2. 修正插件的源码路径映射

日志提示找不到Valgrind的源码文件,可能导致插件无法关联业务代码错误,进而只显示Valgrind自身的抑制条目:

  • 在publishValgrind配置中补充sourceSubstitutionPaths参数,格式为原路径=替换路径,示例:
    publishValgrind failBuildOnInvalidReports: true, failBuildOnMissingReports: false, 
      failThresholdDefinitelyLost: '0', failThresholdInvalidReadWrite: '0', failThresholdTotal: '0', 
      pattern: '**/*.memcheck', publishResultsForAbortedBuilds: false, publishResultsForFailedBuilds: true, 
      unstableThresholdDefinitelyLost: '0', unstableThresholdInvalidReadWrite: '0', unstableThresholdTotal: '0', 
      sourceSubstitutionPaths: '/builddir/build/BUILD/valgrind-3.17.0=/opt/valgrind-3.17.0,/builddir/build/BUILD/valgrind-3.15.0=/opt/valgrind-3.15.0'
    
  • 若无需关联Valgrind自身源码,可忽略该日志,但需确保业务代码路径在Jenkins agent上存在,否则插件无法定位到你的代码错误位置。

3. 验证插件版本与报告格式兼容性

  • 检查当前Jenkins Valgrind插件版本,若版本过旧,可能无法正确解析新版Valgrind生成的*.memcheck格式,尝试升级插件到最新稳定版后重新构建。
  • 用Valgrind自带工具(如valgrind-listener)手动解析*.memcheck文件,确认报告中确实包含未被抑制的错误条目,排除报告本身的格式问题。

4. 调整插件的阈值配置逻辑

当前配置中所有失败/不稳定阈值都设为0,可能导致插件将所有非零错误直接标记为失败,但实际显示时被抑制规则覆盖:

  • 暂时将failThresholdDefinitelyLost等阈值调整为100(或较大值),观察插件是否能正常显示所有错误条目,再逐步调回合理阈值。
  • 确认publishResultsForFailedBuilds: true配置生效,若构建本身失败,检查插件是否正确抓取报告。

5. 排查Jenkins agent的文件权限

  • 确认Jenkins agent进程对*.memcheck文件所在目录有读权限,避免插件无法读取报告内容。
  • 检查报告文件是否被其他进程锁定,导致插件解析不完整。

内容的提问来源于stack exchange,提问作者hoboman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:52:19