Eclipse CDT Linux下内存解析 补记
添加时间:2013-8-1 点击量:
常用对象汇总
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 freed)
应用跨越malloc分派的内存空间(Reading/writing off the end of mallocd blocks)
对客栈的不法接见(Reading/writing inappropriate areas on the stack)
申请的空间是否有开释(Memory leaks – where pointers to mallocd blocks are lost forever)
malloc/free/new/申请和开释内存的匹配(Mismatched use of malloc/new/new [] vs free// [])
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能帮助我们削减内存的应用,在带有虚拟内存的现代体系中,它还可以或许加快我们法度的运行,削减法度逗留在互换区中的几率
容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永
常用对象汇总
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 freed)
应用跨越malloc分派的内存空间(Reading/writing off the end of mallocd blocks)
对客栈的不法接见(Reading/writing inappropriate areas on the stack)
申请的空间是否有开释(Memory leaks – where pointers to mallocd blocks are lost forever)
malloc/free/new/申请和开释内存的匹配(Mismatched use of malloc/new/new [] vs free// [])
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能帮助我们削减内存的应用,在带有虚拟内存的现代体系中,它还可以或许加快我们法度的运行,削减法度逗留在互换区中的几率