Qt Creator配置以及使用Valgrind - 检测内存泄露

引言

Valgrind是一个在Linux平台下广泛使用的开源动态分析工具,它提供了一套丰富的工具集合,旨在帮助开发者检测和解决内存管理错误、线程同步问题以及优化程序性能。

对于Qter来说,可以直接在Qt Creator配置Valgrind,输出的相关信息会逻辑清晰的显示在界面上。

一、下载安装

可以直接使用包管理工具下载安装sudo apt-get install valgrind,或者通过源码进行编译安装。 本文使用源码安装

1.1 下载源码

官方下载地址:https://valgrind.org/downloads/,如下图所示:点击红框处即可下载。

在这里插入图片描述

1.2 安装

    1. 安装步骤如下:
      解压下载的压缩包、进入解压的文件、配置生成Makefile、make编译源码、make install安装 (需要root权限),命令如下
tar xvf valgrind-3.23.0.tar.bz2
cd valgrind-3.23.0
./configure
make
sudo make install
    1. 验证
      终端中输入valgrind -h 命令,显示如下图所示:
      在这里插入图片描述

二、配置使用

2.1 Qt Creator配置

    1. 选择菜单栏中的 Tools > Options
      在这里插入图片描述
    1. 选择Analyzer > Valgrind,会自动获取valgrind的可执行路径,可配置额外的参数
      注意:不同Qt Creator版本,可配置的项也不同. 一般来说,高版本可配置的项多,较全面
      在这里插入图片描述

2.2 使用

    1. 选择一个项目作为active project(只打开一个项目可忽略),工具栏选择 Analyze > Valgrind Memory Analyzer即可对此项目进行检测
      在这里插入图片描述
    1. 启动稍慢,需要等待 ,在应用程序输出 (Application Output)窗口会显示valgrind相关命令,如下图所示:
      在这里插入图片描述
    1. 在程序自动 or 手动退出后才会结束分析,输出相关信息
      在这里插入图片描述
int *b = new int[10];  // new了40个字节的内存,但是程序最后没有释放.

2.3 更多详细信息可参考官方文档:

    1. 打开Qt Creator的帮助
      在这里插入图片描述
    1. 下方有Detection Memory Leaks with Memcheck,里面有详细的使用和配置说明
      在这里插入图片描述

三、参考链接

【C/C++ 实用工具】内存泄漏与堆溢出检测工具一览:https://blog.csdn.net/qq_21438461/article/details/133215065
内存泄漏检测工具valgrind神器:https://blog.csdn.net/weixin_45264425/article/details/133824586
Qt creator 搭配 valgrind 检测内存泄漏:https://www.cnblogs.com/coding-my-life/p/4004161.html
valgrind的使用与输出结果分析 :https://www.cnblogs.com/kuangsyx/p/8043526.html
盘一盘几个内存泄漏检测工具:https://zhuanlan.zhihu.com/p/608640068
Valgrind Documentation:https://valgrind.org/docs/manual/index.html

相关推荐

  1. Valgrind:查找内存泄漏

    2024-07-18 00:28:03       53 阅读
  2. C++ 内存泄漏检测工具——Valgrind(Linux系统)

    2024-07-18 00:28:03       33 阅读
  3. 【Linux】使用Valgrind定位内存增长问题

    2024-07-18 00:28:03       25 阅读
  4. C&C++内存泄露检测

    2024-07-18 00:28:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 00:28:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 00:28:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 00:28:03       57 阅读
  4. Python语言-面向对象

    2024-07-18 00:28:03       68 阅读

热门阅读

  1. C# lock关键字

    2024-07-18 00:28:03       18 阅读
  2. C# —— 泛型

    2024-07-18 00:28:03       22 阅读
  3. 利用Postman进行自动化测试:从基础到进阶

    2024-07-18 00:28:03       20 阅读
  4. 河南萌新联赛2024第(一)场:河南农业大学

    2024-07-18 00:28:03       20 阅读
  5. ZC2205-24V500mAUltralow-Quiescent-Current LDO

    2024-07-18 00:28:03       16 阅读
  6. golang项目中gorm框架的配置和具体使用

    2024-07-18 00:28:03       20 阅读
  7. 使用Django框架实现音频上传功能

    2024-07-18 00:28:03       20 阅读
  8. 38 IRF+链路聚合+ACL+NAT组网架构

    2024-07-18 00:28:03       21 阅读
  9. Resilience4j 实现接口限流

    2024-07-18 00:28:03       22 阅读
  10. ld,GNU 链接器介绍以及命令行参数详解

    2024-07-18 00:28:03       17 阅读