Eclipse CDT Linux下内存分析 补记

常用工具汇总

http://www.ibm.com/developerworks/cn/linux/l-cn-memleak/

常用的内存分析工具

http://en.wikipedia.org/wiki/Category:Memory_management_software

 

PurifyPlus

http://www-03.ibm.com/software/products/us/en/ratpurlinux

http://en.wikipedia.org/wiki/IBM_Rational_Purify

不支持常用的Linux 64系统[Ubuntu redhat],悲剧

 

Valgrind简介
Memcheck

Memcheck 工具主要检查下面的程序错误:
使用未初始化的内存(Use of uninitialised memory)
使用已经释放了的内存(Reading/writing memory after it has been free'd)
使用超过malloc分配的内存空间(Reading/writing off the end of malloc'd blocks)
对堆栈的非法访问(Reading/writing inappropriate areas on the stack)
申请的空间是否有释放(Memory leaks – where pointers to malloc'd blocks are lost forever)
malloc/free/new/delete申请和释放内存的匹配(Mismatched use of malloc/new/new [] vs free/delete/delete [])
src和dst的重叠(Overlapping src and dst pointers in memcpy() and related functions)
Callgrind

Callgrind收集程序运行时的一些数据,函数调用关系等信息,还可以有选择地进行cache 模拟。在运行结束时,它会把分析数据写入一个文件。callgrind_annotate可以把这个文件的内容转化成可读的形式
Cachegrind

它模拟CPU中的一级缓存I1,D1和L2二级缓存,能够精确地指出程序中cache的丢失和命中。如果需要,它还能够为我们提供cache丢失次数,内存引用次数,以及每行代码,每个函数,每个模块,整个程序产生的指令数。这对优化程序有很大的帮助
Helgrind

它主要用来检查多线程程序中出现的竞争问题。Helgrind 寻找内存中被多个线程访问,而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发掘的错误。Helgrind实现了名为" Eraser" 的竞争检测算法,并做了进一步改进,减少了报告错误的次数
Massif

堆栈分析器,它能测量程序在堆栈中使用了多少内存,告诉我们堆块,堆管理块和栈的大小。Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率

时间: 2024-10-31 01:17:44

Eclipse CDT Linux下内存分析 补记的相关文章

Eclipse CDT Linux下内存分析 实战历险

C++产品开发,上线集成时,都需要内存泄露.覆盖率等检测,这些在Windows下都有很好的工具,如 Visual Studio: 这个内置了很多的工具 Devpartner: VC6时BoundChecker非常棒,Devpartner集成了很多的功能集合 http://www.borland.com/products/devpartner/default.aspx Insure++: http://www.parasoft.com/jsp/products/insure.jsp?itemId=

大并发连接的oracle在Linux下内存不足的问题的分析(转)

最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库的SGA设置为20G,当运行业务时,一个业务高峰期时,发现swap频繁交换,CPU 100%,Load很高,基本体现为内存不足.此时的连接数在600个左右.按内存的计算:每个连接占用内存基本在5M,这样600个连接只占用3G内存,SGA内存20G,操作系统占用内存1G,这样总占用的内存为24G,而总共内存有40G,怎么会内存不足呢?当时是百思不得其解,于是做了大量的压力测试,首先是写了一个java程序,启动多个线程,每

linux下性能分析方法实例

比较老了~不过可以学习学习分析过程~~ 某一天,一个客户打电话来需要技术帮助,并抱怨平常15秒就可以打开的网页现在需要20分钟才可以打开. 具体系统配置如下: RedHat Enterprise Linux 3 update 7 Dell 1850 Dual Core Xenon Processors, 2 GB RAM, 75GB 15K Drives Custom LAMP software stack(译注:Llinux+apache+mysql+php 环境) 性能分析之步骤 1. 首先

linux下内存调试工具——valgrind

1.valgrind之memcheck  最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获.所以,它能检测以下问题:  1.对未初始化内存的使用:  2.读/写释放后的内存块:  3.读/写超出malloc分配的内存块:  4.读/写不适当的栈中内存块:  5.内存泄漏,指向一块内存的指针永远丢失:  6.不正确的malloc/free或new/delete匹配:  7.memcpy()相关函数中

请问, eclipse CDT环境下,gdb调试多进程是不是有bug?

问题描述 debug一过_beginthread就无法单步,在子进程里的断点也停不下来.debug窗体里没有线程显示,gdb的信息是:Nosourcefilenamedtest.c.Nosourcefilenamedtest.c.Nosourcefilenamedtest.c.[NewThread10816.0x3508][NewThread10816.0x384c][SwitchingtoThread10816.0x384c]warning:SuspendThreadfailed.(winer

在linux下将数字补齐为固定宽度的方式

可以使用awk命令处理 如: echo 1245| awk '{printf("%06dn",$0)}'

linux下获取硬盘使用情况[总结]

1.前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃.为了捕获硬盘写满的异常场景,我们需要在写日志过程中判断硬盘空间的使用情况,根据硬盘的使用情况,就可以判断是否写满了.如果将要写满了,就给出警告.这样就可以避免程序崩溃.首先看一下linux获取硬盘和目录大小的命令,最后总结一下statfs结构和函数. 2.df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况.df命令经常

boost在linux下序列化然后在windows反序列的问题

问题描述 boost在linux下序列化然后在windows反序列的问题 在linux下使用了boost的序列化,发现序列化的文件是 开始: &(此处有7个空格)serialization::archive& 正方形的符号我打不出来,用&代替 而我在windows下执行反序列化的时候 发现在读取文件头的时候错误,然后我最终代码,发现在读取serialization::archive的时候,之前多了4个0值 在windows下,正确的序列化文件应该是 &(此处有3个空格)se

linux下的cdt在debug看内存值的时候背景色是黑的,怎么变成白色

问题描述 linux下的cdt在debug时,把鼠标放在变量上看内存值的时候背景色是黑的,怎么变成白色,我不知道java版的是不是也是这样,但是我用的cdt都是这样,看起来很不方便,具体效果就是附件中图片的中间那一块 问题补充:changchang 写道 解决方案 这个我也折腾了很久...你用的是ubuntu吧?在eclipse里实在找不到地方改,后来我发现这玩意跟操作系统的工具提示颜色有关...在桌面右击 -> 更改桌面背景 ->主题 -> 自定义 ->颜色 ->工具提示我