博尔塔拉信息港
体育
当前位置:首页 > 体育

防内存泄露Linux系统用Valgrin

发布时间:2019-06-20 03:51:45 编辑:笔名

  用C/C++开发其中令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一个内存访问越界,需要要花上好几天时间,如果有一款工具能够帮助我们做这件事情就好了,valgrind正好就是这样的一款工具。 Valgrind是一款基于模拟linux下的程序调试器和剖析器的软件套件,可以运行于x86, amd64和ppc32架构上。valgrind包含一个核心,它提供一个虚拟的CPU运行程序,还有一系列的工具,它们完成调试,剖析和一些类似的任务。valgrind是高度模块化的,所以开发人员或者用户可以给它添加新的工具而不会损坏己有的结构。 你可以在它的站上下载到的valgrind,它是开放源码和免费的。 一、介绍 valgrind包含几个标准的工具,它们是: 1、memcheck memcheck探测程序中内存管理存在的问题。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用。因此memcheck工具能够探测到以下问题: 1)使用未初始化的内存 2)读/写已经被释放的内存 3)读/写内存越界 4)读/写不恰当的内存栈空间 5)内存泄漏 6)使用malloc/new/new[]和free/delete/delete[]不匹配。 2、cachegrind cachegrind是一个cache剖析器。它模拟执行CPU中的L1, D1和L2 cache,因此它能很精确的指出代码中的cache未命中。如果你需要,它可以打印出cache未命中的次数,内存引用和发生cache未命中的每一行代码,每一个函数,每一个模块和整个程序的摘要。如果你要求更细致的信息,它可以打印出每一行机器码的未命中次数。在x86和amd64上,cachegrind通过CPUID自动探测机器的cache配置,所以在多数情况下它不再需要更多的配置信息了。 3、helgrind helgrind查找多线程程序中的竞争数据。helgrind查找内存地址,那些被多于一条线程访问的内存地址,但是没有使用一致的锁就会被查出。这表示这些地址在多线程间访问的时候没有进行同步,很可能会引起很难查找的时序问题。 二、valgrind对你的程序都做了些什么 valgrind被设计成非侵入式的,它直接工作于可执行文件上,因此在检查前不需要重新编译、连接和修改你的程序。要检查一个程序很简单,只需要执行下面的命令就可以了 valgrind --tool=tool_name program_name 比如我们要对ls -l命令做内存检查,只需要执行下面的命令就可以了 valgrind --tool=memcheck ls -l 不管是使用哪个工具,valgrind在开始之前总会先取得对你的程序的控制权,从可执行关联库里读取调试信息。然后在valgrind核心提供的虚拟CPU上运行程序,valgrind会根据选择的工具来处理代码,该工具会向代码中加入检测代码,并把这些代码作为终代码返回给valgrind核心,valgrind核心运行这些代码。 如果要检查内存泄漏,只需要增加--leak-check=yes就可以了,命令如下 valgrind --tool=memcheck --leak-check=yes ls -l 不同工具间加入的代码变化非常的大。在每个作用域的末尾,memcheck加入代码检查每一片内存的访问和进行值计算,代码大小至少增加12倍,运行速度要比平时慢25到50倍。 valgrind模拟程序中的每一条指令执行,因此,检查工具和剖析工具不仅仅是对你的应用程序,还有对共享库,GNU C库,X的客户端库都起作用。

  查看本文来源

月经后期病吃什么好
月经后期吃什么排污
月经后期吃什么排淤血
友情链接
小孩高烧40度怎么办 宝宝反复发烧怎么办 小儿退烧推拿手法 孩子睡觉咳嗽厉害怎么办 三个多月的宝宝咳嗽怎么办 宝宝一咳嗽就吐是怎么回事 小儿大便干 孩子挑食怎么办 宝宝病毒性感冒发烧怎么办 五个月宝宝发烧39度怎么办 9个月宝宝发烧怎么处理 宝宝发烧反复怎么办 宝宝退烧方法 宝宝干咳吃什么药 孩子咳嗽有痰吃什么药 儿童发烧 小儿便秘怎么办 儿童发烧怎么退烧 孩子上火 婴幼儿便秘怎么办 婴儿反复发烧怎么办 孩子发烧了怎么办如何退烧 松原脑外科医院哪家好 丽江预防保健科医院哪家好 德宏骨科医院哪家好 德宏整形科医院哪家好 怒江小儿呼吸科医院哪家好 迪庆功能神经外科医院哪家好 迪庆口腔科医院哪家好 白银功能检查科医院哪家好 贵阳头颈外科医院哪家好 拉萨五官科医院哪家好 日喀则遗传咨询科医院哪家好 那曲内科医院哪家好 中卫小儿泌尿科医院哪家好 万宁生殖中心医院哪家好 双河心理咨询科医院哪家好 昆玉普外科医院哪家好 广州一甲医院哪家好 梅州一乙医院哪家好 河源二级医院哪家好 阿拉尔有哪些中医内科医院 揭阳一丙医院哪家好 阿拉尔有哪些预防保健科医院 青岛一丙医院哪家好 五指山有哪些放射科医院 德阳其他医院哪家好 沈阳二级医院哪家好 阳泉三乙医院哪家好 临高有哪些中医心内科医院 百色三丙医院哪家好 白沙有哪些小儿心内科医院 白沙有哪些心胸外科医院 塔城一级医院哪家好 保亭有哪些心胸外科医院 海西一级医院哪家好 西宁有哪些小儿眼科医院 海东有哪些实验中心医院 海北有哪些理疗科医院 香蕉 香港有哪些司法鉴定科医院 减肥坐姿 北屯有哪些中医儿科医院 胃肠炎 二手女人 双河有哪些老年病科医院 白内障 双河有哪些神经内科医院 胃息肉 洋葱小组话题 阴囊湿疹 万宁有哪些二甲医院 黄石医学影像科医院哪家好 宜昌儿童口腔科医院哪家好 襄阳介入医学科医院哪家好 襄阳护理咨询医院哪家好 荆州小儿胸外科医院哪家好 恩施肾病内科医院哪家好 潜江肝病科医院哪家好 郑州体检科医院哪家好 洛阳小儿急诊科医院哪家好 平顶山中医五官科医院哪家好 平顶山心脏科医院哪家好 鹤壁医疗美容医院哪家好 许昌牙周科医院哪家好 周口小儿神经内科医院哪家好 驻马店妇科医院哪家好 成都小儿皮肤科医院哪家好 自贡整形科医院哪家好 自贡小儿神经外科医院哪家好 泸州小儿康复科医院哪家好 德阳口腔科医院哪家好 广元老年病科医院哪家好 广元小儿外科医院哪家好 达州血管外科医院哪家好 甘孜小儿心外科医院哪家好 邢台中医五官科医院哪家好 保定小儿骨科医院哪家好 衡阳口腔特诊科医院哪家好 衡阳五官科医院哪家好