当前位置: 首页 > 编程日记 > 正文

valgrind概述及错误分析

       

      Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具.而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。

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

错误分析

类型1

valgrind结果:

分析:
1.函数中动态申请的堆内存没有释放
2.对堆内存的访问越界

类型2

valgrind结果:

分析:程序跳转依赖于一个未初始化的变量

类型3

valgrind结果:

分析:非法读,非法写,如访问数组时越界,对动态内存访问时超出了申请的内存大小范围

类型4

valgrind结果:

分析:使用strcpy, strncpy, memcpy, strcat等时源地址和目标地址设置出现重叠

类型5

valgrind结果:

分析:内存动态管理错误,包括申请和释放不一致,申请和释放不匹配,释放后仍然读写

类型6



valgrind结果:

分析:内存泄露. Memcheck将内存泄露分为两种,一种是可能的内存泄露(Possibly lost),另外一种是确定的内存泄露(Definitely lost)。Possibly lost 是指仍然存在某个指针能够访问某块内存,但该指针指向的已经不是该内存首地址。Definitely lost 是指已经不能够访问这块内存。而Definitely lost又分为两种:直接的(direct)和间接的(indirect)。直接和间接的区别就是,直接是没有任何指针指向该内存,间接是指指向该内存的 指针都位于内存泄露处。

(本文参考了IBM,valgrind官网的技术资料,总结而成。)

相关文章:

超过C++、压制Java与C,Python拔得TIOBE年度编程语言!

作者 | 屠敏来源 | CSDN(ID:CSDNNews)如同两个月前,TIOBE 编程语言社区于官网预料的那般,2018 年的年度编程语言终将在一众老牌编程语言如 Java、C、C、Python、Visual Basic .NET 中诞生。近日,TIOBE 排行…

CodeArt SharePoint Permission Extension 1.0 beta publish

正式发布1.0版本,已经打包成wsp,请到以下地址下载:http://sppex.codeplex.com/Release/ProjectReleases.aspx?ReleaseId30671 解压后,运行wsp_addsolution.cmd安装解决方案,到管理中心-》操作-》解决方案管理安装解决…

《请不要回应外星人2019》

作者 | 若名出品 | AI科技大本营 今天早上,关于“加拿大天文学家发现 15 亿光年外讯号”的话题一度被推到了微博热搜榜第二位,当然也引发了全球范围内的关注。舆论导向都是,“人类该不该做出回应?”翻了一圈评论,人…

如何使用Log4j?

要学习什么是log4j,那我们也知道log4j能干吗??这里就不阐述了,可以自己去google1、 Log4j是什么? Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧&#xf…

解决:无法创建该DNS 服务器的委派

第一次安装AD DNS的时候,你可能遇到以下的提示,无法创建该DNS 服务器的委派,这是一个提示,而不是一个报错。 以下是详细的说明。 将具有 DNS 服务器的新 Windows Server 2008 或 Windows Server 2008 R2 域控制器安装到 treyr…

SQL to Elasticsearch java code

把Elasticsearch当成Database用,因为Elasticsearch不支持SQL,就需要把SQL转换成代码实现。 1.按某个field group by查询count SELECT fieldA, COUNT(fieldA) from table WHERE fieldC "hoge" AND fieldD "huga" AND fieldB…

【转载】linux静态链接库与动态链接库的区别及动态库的创建

这篇文章对于动态库的概念及使用介绍的很不错,故收藏了。一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library&a…

买不到回家的票,都是“抢票加速包”惹的祸?

作者 | 屠敏来源 | CSDN(ID:CSDNNews)距离国家法定春节假日不足一个月,且首批除夕票已于近日正式开售。但万万没想到,当人、钱、手机、PC、iPad 万事俱备之际,东风刮得太快,眼巴巴盯着将于整点开…

HTSRealistic missions 10:Holy Word High School

这到题说实在的挺难。。。首先进入页面,进去后查看源代码发现有个空图片,图片是个链接,链接到staff.php。点击进入要求用户名密码,尝试注入,无效在来至主页,有个staff list的链接,点进去&#x…

Makefile的东西

宏定义: 1. Makefile中直接定义宏 OBJECTSfilea.o fileb.o filec.o #定义宏 Zfiled.oprog: $(OBJECTS) #引用宏cc $(OBJECTS) -o prog #我的机子环境中需要4个tab键prog1: $Z #引用宏,单个字符无需加园括号cc $Z -o prog12. 在make命令之后带有新的宏定…

TensorFlow 2.0开发者预览版发布

整理 | Jane出品 | AI科技大本营从去年 8 月 Google 公开发布消息正在研发 TensorFlow 2.0 ,让我们在 12 月 提前看到了一些 高级 API 的变化,今天我们终于等来了“tf-nightly-2.0”,一个 TensorFlow 2.0 开发者预览版。在今天 Wicke 的邮件中…

DOCKER OVERLAY NETWORK consul 注册

下载 consul 二进制包并启动 wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd64.zip unzip consul_0.9.2_linux_amd64.zip mv consul /usr/bin/consul && chmod x /usr/bin/consul nohup consul agent -server -bootstrap -ui -data-dir /va…

怎么写shell脚本才能不耍流氓?

1、不记录日志的 SHELL 脚本就是耍流氓! 我们经常在工作中会遇到一个苦恼的事情,一个 Shell 脚本到底干了什么,什么时候开始执行,什么时候结束的。尤其是数据库备份,我们想知道我们的 MySQL 数据库备份时间。所以给脚本…

透过腾讯张潼离职事件,看AI研究院如何才算成功?

作者 | 洪亮劼编辑 | 琥珀【AI科技大本营导读】近日腾讯 AI Lab 第一负责人张潼博士的离职事件,让不少圈内人士对企业 AI 研究院/实验室的定位、落地能力等问题进行了深刻思考和讨论。据最新消息,张潼未来将回到学界,继续 AI 领域的学术研究&…

java vs .net

... vs paramsjavaprivatestaticintsumUp(int... values) { intsum 0; for(inti 0; i < values.length; i) { sum values[i]; } returnsum; } .netparams 关键字在方法成员的参数列表中使用&#xff0c;为该方法提供了参数个数可变的能力它在只能出现一次并…

#QCon# Devops

今天参加了QCon2011 杭州。听了百度项目管理部的乔梁关于“Devops”的分享。比如如下&#xff1a; continuous integration —— Dev &#xff0c; QA agile —— Business&#xff0c;Dev&#xff0c;QA devops —— Dev&#xff0c;QA&#xff0c;Ops Devops Culture Too…

雷军的100亿计划:不服就干,生死看淡

图片来自小米官网整理 | 琥珀出品 | AI 科技大本营1 月 10 日&#xff0c;红米品牌正式独立。11 日&#xff0c;雷军在小米年会上宣布&#xff0c;2019 年&#xff0c;小米将正式启动“手机AIoT”双引擎战略&#xff0c;作为小米未来五年的核心战略。同时&#xff0c;未来 5 年…

cppcheck源码学习(一)

今天整理了下cppcheck的源码结构&#xff0c;为什么通过写一个个子文件就能够扩展cppcheck的功能呢&#xff1f; 看了下代码&#xff0c;并通过简化代码&#xff0c;略懂一二了。 首先我们定义一个基类test.h&#xff0c;只定义一个头文件足够&#xff1a; #ifndef TESTH #defi…

产品与技术优势发威 用友U9截击SAP ORACLE

随着金融危机的全面爆发&#xff0c;实体经济的冬天也随之而来。也正是金融危机&#xff0c;使得多年以来一直高调占据媒体头条的管理软件厂商们略显低迷&#xff0c;使一直剑拔弩张的中国管理软件市场&#xff0c;进而升级为一场“血腥四溅的肉搏”。<?xml:namespace pref…

oracle中的exists 和 not exists 用法详解

from&#xff1a;http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.htmloracle中的exists 和 not exists 用法详解 (2009-05-14 16:58:18) 有两个简单例子&#xff0c;以说明 “exists”和“in”的效率问题1) select * from T1 where exists(select 1 from T2 where T1.aT2.a)…

清华北大“世界排名断崖式下跌”?

作者 | 琥珀出品 | AI 科技大本营为什么人们疯狂地爱着排名&#xff1f;基本每过一年公布的全球大学排行榜&#xff0c;都会吸引不少的利益相关方甚至吃瓜群众的集体关注。每每此时&#xff0c;网络上泛滥着的却是眼花缭乱、无法令人辨别真假的数字依据&#xff0c;甚至是“专家…

#Qcon# 分享

明天被领导要求分享Qcon体会&#xff0c;实在是件不怎么容易的事情。Qcon这样的企业开发大会&#xff0c;很多东西必须要实际应用过才能深有体会&#xff0c;泛泛的谈似乎又觉得乏味。好吧&#xff0c;泛一下就泛一下吧&#xff0c;总比废话要强(上一句是我认为的废话)。 第二天…

判断一个数为多少位 比如 3 是 1位 102 是3位。

12345678910111213141516//判断一个数为多少位 比如 3 是 1位 102 是3位。#include <iostream>using namespace std; int main() {int a; cout<<"input a num"<<endl; cin>>a; int t1; for(int i10;i<10000000;i*10,t) if(a<i) brea…

完成CitrixVDI架构了解及部署测试

很是不错&#xff0c;经过近两周时间对CitrixVDI架构的学习&#xff0c;有了初步的了解和认识&#xff0c;同时&#xff0c;也在家中完成了整个体系的部署实验。由于公司正在使用着VMware的VDI(Viewe3.0)&#xff0c;又在测试CitrixVDI&#xff0c;使两者终于有了直接的对比&am…

keepalive

高可用解决方案&#xff1a; heartbeat corosync cman keepalived 前面我们讲解了&#xff0c;LVS&#xff08;负载均衡器&#xff09;、Heartbeat、Corosync、Pacemaker、Web高可用集群、MySQL高可用集群、DRDB、iscsi、gfs2、cLVM等&#xff0c;唯一没有讲解的就是LVS可用&a…

普元王葱权:数字化时代需要新一代的大数据应用平台架构

记者 | 杨丽出品 | AI 科技大本营&#xff08;rgznai100&#xff09;2018 年 12 月 6 日&#xff0c;北京新云南皇冠假日酒店&#xff0c;由中国计算机学会主办&#xff0c;CCF 大数据专家委员会承办&#xff0c;CSDN、中科天玑数据科技股份有限公司协办的 2018 中国大数据技术…

Agile DSL Development in Ruby 笔记

pdf见&#xff1a;http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What is DSL ——designed for a specific domain ——captures jargon in executable form ——can be internal or external 2. How to design Ruby DSL (…

人生的出口。在哪

清晨&#xff0c;雨停了。到处都是滴滴答答的雨滴声。似乎这场空洞漫长的过程一直在延续着。也不知道是为什么。在下完雨之后。自己的心情会特别的低落沉重。似乎经历了一场浩劫。没有太多的言语可以去描述。只有自己内心乏味的明白那些含义深刻的东西。约了好友。我迟到了十多…

zabbix专题:第十一章 zabbix之SNMP方式监控

&#xff08;SNMP基本都是监控网络设备&#xff0c;本文介绍点理论知识&#xff09; 概述 如果我们需要监控打印机、路由器、UPS等设备,肯定不能使用zabbix agentd,因为他们不能安装软件的,还好他们一般都支持SNMP协议,这样我可以使用SNMP来监控他们.如果你希望使用SNMP agent来…

Some Rules from wrting your own dsl with ruby

来自&#xff1a;http://blog.nofail.de/2010/02/writing-your-own-dsl-with-ruby/ Some Rules from wrting your own dsl with ruby 1. let the user choose how to use it all implemented methods return the object instance itself,so one can chain method calls for con…