首先对源文件进行编译:
  1. Preparing your program
    Compile your program with -g to include debugging information so that Memcheck's error messages include exact line numbers.
    -O0 a good idea if you can tolerate the slowdown
    -O1 line number in error message can be inaccurate although generally speaking running Memcheck on code compiled at -O1 works fairly well and the speed improvement compared to running -O0 is quite significant.
    -O2 not recommended
  2. Running your program under Memcheck
    ./myprog arg1 arg2
    valgrind --leak-check=yes ./myprog arg1 arg2
    your program will run much slower(eg. 20 to 30 times) than normal and use a lot more memory.

然后使用valgrind:

用法: valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind工具

常用选项

  1. --tool=[default: memcheck]
    --tool=memcheck:要求用 memcheck这个工具对程序进行分析
  2. --log-file=filename
    将输出的信息写入到filename.PID 的文件里,PID是运行程序的进行ID
  3. --log-file-exactly=filename
    指定就输出到 filename文件
  4. --log-socket=IP:PORT
    把输出信息发送到网络中指定的IP:PORT 去
  5. --leak-ckeck=yes
    要求对leak给出详细信息
  6. --leak-check=full
    完全检查内存泄漏
  7. --xml=[default: no]
    将信息以xml格式输出,只有 memcheck可用
  8. --gen-suppressions=[default: no]
    如果为yes, valgrind会在每发现一个错误便停下让用户做选择是继续还是退出
  9. --leak-check=[default: summary]
    Leak是指,存在一块没有被引用的内存空间,或没有被释放的内存空间,如 summary,只反馈一些总结信息,告诉你有多少个malloc ,多少个free 等;如果是full 将输出所有的leaks,也就是定位到某一个malloc/free 。
  10. --show-reachable=[default: no]
    如果为 no,只输出没有引用的内存leaks,或指向 malloc返回的内存块中部某处的leaks
  11. --undef-value-errors=[default: yes]
    如果为 yes,memcheck将对无定义值错进行检查
一般我们使用如下命令:
valgrind --log-file-exactly=/path/1.txt --leak-check=full --show-reachable=yes prog-and-args;

开源工具之valgrind相关推荐

  1. Unix下C程序内存泄露检测工具:valgrind的安装使用

    Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...

  2. C++ performance 性能分析工具(sanitizers valgrind gprof gperftools perf)的使用

    文章目录 1. time 2. Sanitizers 2.1 内存泄漏`-fsanitize=leak` 2.2 地址错误 `-fsanitize=address` 3. Valgrind 工具集 3 ...

  3. docker logstash_用于监视Kubernetes和Docker的六大开源工具

    Kubernetes和Docker是在DevOps圈中最常听到的两个词.Docker是一个工具,它使你能够以容器化的方式运行应用程序,Kubernetes是一个用于编排.管理容器的平台--如果你想使用 ...

  4. 杂谈 | 当前知识蒸馏与迁移学习有哪些可用的开源工具?

    所有参与投票的 CSDN 用户都参加抽奖活动 群内公布奖项,还有更多福利赠送 作者&编辑 | 言有三 来源 | 有三AI(ID:yanyousan_ai) [导读]知识蒸馏与迁移学习不仅仅属于 ...

  5. 21个必须知道的机器学习开源工具!

    作者 | SebastianScholl 译者 | 刘静,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 本文将介绍21种用于机器学习的开源工具. 以下为译文: 你肯定已经了解流行的开源 ...

  6. 科技公司最常用的50款开源工具,提升你的逼格~

    点击关注上方"视学算法",设为"置顶或星标",第一时间送达技术干货. 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品 ...

  7. 如何提升 Linux 服务器安全的开源工具和技巧?

    本文基于我作为初学者迄今所学的知识,详细介绍了六个简单的步骤,以提高个人使用的 Linux 环境的安全性.在我的整个旅程中,我利用开源工具来加速我的学习过程,并熟悉了与提升 Linux 服务器安全有关 ...

  8. 官方iPhone SDK和开源工具链

    当Jobs宣称"iPhone SDK提供的是和苹果内部开发人员使用的相同的工具"时,他显然忘了在iPhone SDK发布之前几个月,就有人开始使用开源的Open Tool Chai ...

  9. 这10个机器学习开源工具,你用过吗?

    作为机器学习开发人员,你可能已经接触到很多机器学习资源,今天给大家介绍10个机器学习开源工具,有很多都是可以在项目中使用的工具,如果有帮到你的话,欢迎转发收藏. 1.AutoML  AutoML是一款 ...

最新文章

  1. 利用OpenCV的convexHull和convexityDefects做凸包(凸壳)检测及凸包(凸壳)的缺陷检测
  2. linux编程基础_第1篇 Linux系统编程 -多线程基础
  3. 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
  4. 中国光纤管理解决方案市场发展分析及十四五规划咨询建议报告2022年版
  5. 多线程与网络之NSURLConnection发送请求
  6. hdfs 操作 入门api
  7. 地址已经被使用——Address already in use(来自《后台开发:核心技术于应用实践》)
  8. java提升权限运行_提升代码的运行权限,实现模拟管理员身份的功能
  9. Android应用程序版本号管理(官方文档中文版) 2011-08-07 22:03:36
  10. java的ArrayList分析
  11. 考研数据结构程序题常见代码【C语言实现】
  12. 人工智能面试问题整理
  13. 获取QQ好友列表、QQ分组信息、QQ群成员数据接口实现
  14. DPDK 无锁ring, 详解
  15. 针孔相机畸变成像详解
  16. 青少年编程究竟应该从什么语言学起?
  17. 大连三家软件企业入围全国软件百强排行榜
  18. 浅谈设计模式(一)策略模式
  19. java实现高德地图app,Android 高德地图入门demo,最新高德地图实现方法,附源码及apk...
  20. 白鲸开源代立冬:一年5个孵化项目来自于中国,佛系Apache如何帮助中国开源立足全球?

热门文章

  1. Linux那些事儿 之 戏说USB(6)好戏开始了
  2. 在Ubuntu 16.04.1 LTS上安装ats 5.3.2
  3. CSS、JavaScript、PHP和Python编程合二为一
  4. Rocksdb 的 BlobDB key-value 分离存储插件
  5. 修改ceph crush map,并指定到资源池
  6. QT 中使用 OpenCv 的 CascadeClassifier 报错
  7. linux valgrind memCheck ---内存检查工具的可视化方法valkyrie
  8. MyBatis中#{}和${}的区别
  9. sleep和wait到底什么区别
  10. USACO JANUARY——矩形[rects]