valgrind使用入门

  valgrind:a suite of tools for debugging and profiling programs

  1)简介:Valgrind用于调试、分析Linux的可执行文件。

  2)安装:

yum install valgrind.x86_64 # yum search valgrind

  3)常用选项:--tool=<toolname>:运行Valgrind的工具。默认是memcheck,其他可用值有cachegrind、callgrind等。

  4)示例:

int main()
{
    int *p1 = new int;

    int *p2 = NULL;
    cout << *p2 << endl;

    return 0;
}

  编译(加-g选项)得到a.out,再执行valgrind ./a.out,以下是其输出:

==16564== Memcheck, a memory error detector # 默认使用memcheck工具
... ...
==16564== Invalid read of size 4 # 在test.cpp第9行出现非法内存访问(且size为4)
==16564==    at 0x4008B2: main (test.cpp:9)
==16564==  Address 0x0 is not stack‘d, malloc‘d or (recently) free‘d
... ...
==16564== Process terminating with default action of signal 11 (SIGSEGV)
==16564==  Access not within mapped region at address 0x0
==16564==    at 0x4008B2: main (test.cpp:9)
... ...
==16564== HEAP SUMMARY:
==16564==     in use at exit: 4 bytes in 1 blocks # 内存泄漏情况
==16564==   total heap usage: 1 allocs, 0 frees, 4 bytes allocated
==16564==
==16564== LEAK SUMMARY:
==16564==    definitely lost: 0 bytes in 0 blocks
==16564==    indirectly lost: 0 bytes in 0 blocks
==16564==      possibly lost: 0 bytes in 0 blocks
==16564==    still reachable: 4 bytes in 1 blocks
==16564==         suppressed: 0 bytes in 0 blocks
... ...
Segmentation fault

不断学习中。。。

时间: 2024-12-06 09:36:00

valgrind使用入门的相关文章

valgrind 使用入门

近期在学习使用valgrind 来定位性能问题,记录一下整个操作过程以及涉及到的工具 一般在机器上都会预装valgrind 工具 使用callgrind 工具检查程序的调用情况,例如使用valgrind 来监控sequoiadb 的函数调用关系,可以执行以下命令来启动sequoiadb的某个节点进程 valgrind --tool=callgrind /opt/sequoiadb/bin/sequoiadb -c /opt/sequoiadb/conf/local/11910/ valgrind

valgrind使用整理

valgrind使用整理时间:20180703参考文献:https://www.cnblogs.com/AndyStudy/p/6409287.html valgrind 工具介绍和简单的使用https://blog.csdn.net/shixin_0125/article/details/78590796 linux工具之检测内存泄漏-valgrindhttps://www.cnblogs.com/zhoudayang/p/6110360.html Valgrind 快速入门0).前言内存泄漏

Valgrind的快速入门指南

译至:http://www.valgrind.org/docs/manual/quick-start.html 1. 引言 Valgrind的工具套件提供了大量的调试和分析工具,帮助你让你的程序跑的更快,更正确.这些工具中最流行的被称为Memcheck.它可以检测C和C++程序中常见的许多和内存相关的,并可能导致崩溃和不可预知行为的错误. 本指南的其余部分提供了你所需要的最少信息来开始使用Memcheck程序检测内存错误.对于Memcheck和其他工具的完整文档,请阅读产品说明书. 2. 准备程

R语言快速上手入门

R语言快速上手入门 课程学习网址:http://www.xuetuwuyou.com/course/196 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本教程深入浅出地讲解如何使用R语言玩转数据.课程中涵盖R语言编程的方方面面,内容涉及R对象的类型.R的记号体系和环境系统.自定义函数.if else语句.for循环.S3类R的包系统以及调试工具等.本课程还通过示例演示如何进行向量化编程,从而对代码进行提速并尽可能地发挥R的潜能.本课程适合立志成为数据科学家的

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

JAVA通信系列二:mina入门总结

一.学习资料 Mina入门实例(一) http://www.cnblogs.com/juepei/p/3939119.html Mina入门教程(二)----Spring4 集成Mina http://www.cnblogs.com/juepei/p/3940396.html Apache Mina 入门实例--创建一个MINA时间服务http://loftor.com/archives/apache-mina-quick-start-guide.html MINA2.0用户手册中文版--系列文

Storm入门(四)WordCount示例

Storm API文档网址如下: http://storm.apache.org/releases/current/javadocs/index.html 一.关联代码 使用maven,代码如下. pom.xml  和Storm入门(三)HelloWorld示例相同 RandomSentenceSpout.java /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor lice

浅谈Ubuntu PowerShell——小白入门教程

早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on Ubuntu的同学们提供一点小小的入门帮助,谢谢大家支持~ PowerShell Core是由Microsoft开发的运行在.Net Core上的开源跨平台的任务自动化和配置管理系统. 1.   在Ubuntu 16.04上安装PowerShell Core a)         导入公共存储库GP