• (转载)valgrind,好东西,一般人我不告诉他~~ 选项


    (转载)http://blog.csdn.net/chinalinuxzend/article/details/2270260

    原贴:http://groups.google.com/group/riverbird2005/browse_thread/thread/6814aca2d1943d32 

     

          今天dot.kde登了一篇对valgrind的作者 Jonathan Riddell 的访谈。我作为valgrind的老用户,当年调程序时获益
    很多,在这篇访谈里进一步长了见识,深感有必要把这个优秀的开发工具介绍给诸位。以下内容多翻译自该访谈(意译啦)。
    啥是valgrind
        Valgrind是帮助程序员寻找程序里的bug和改进程序性能的工具。程序通过valgrind运行时,valgrind收集各种有用的信
    息,通过这些信息可以找到程序中潜在的bug和性能瓶颈。
        Valgrind现在提供多个工具,其中最重要的是Memcheck,Cachegrind,Massif和Callgrind。


    (1)Memcheck: 
        这个工具可以用来寻找c、c++和fortran程序中内存管理的错误。写c或c++程序时,很多隐藏很深的bug是内存操作上出了问题。而这
    些在Memcheck面前都无处遁形(偶当年用的就是这个功能)。Memcheck可以检查出下列几种内存操作上的错误(大家自查一下有没有犯
    过;):
               读写已经释放的内存
               读写内存块越界(从前或者从后)
               使用还未初始化的变量
               将无意义的参数传递给系统调用
               内存泄漏
             (笔者补充一条,同一个malloc的内存块释放多次。当年这么个bug让我找翻天)


    (2)Cachegrind: 
        这个工具可以提供详尽的profiling信息。它不光对指令、内存访问进行计数,更能针对每条指令、每行源代码、每个函数和每个程序统计
    cache的不命中次数。大家应该知道,cache对目前系统的性能有决定性的影响。因此这些信息可以指导程序员调整代码,最大限度的提高程序性能。
        访谈中提到,valgrind自身利用该工具在过去几个月内使性能提高了25%-30%。据早先报道,kde的开发team也对
    valgrind在提高kde性能方面的帮助表示感谢。

    (3)Massif:

         Massif对内存的分配和释放做profile。程序开发者通过它可以深入了解程序的内存使用行为,从而对内存使用进行优化。这个功能对C+
    +尤其有用(因为C++有很多隐藏的内存分配和释放)。


    (4)Callgrind: 
        Callgrind是一个复杂的工具(复杂到笔者没看太明白有关它的介绍)。它基于Cachegrind,除了具有Cachegrind的功能
    外,还可以统计调用带来的开销。


    用法:
        Valgrind使用起来非常简单,你甚至不需要重新编译你的程序就可以用它。当然如果要达到最好的效果,获得最准确的信息,还是需要按要求重
    新编译一下的。比如在使用memcheck的时候,最好关闭优化选项。 

  • 相关阅读:
    Chrome 中的彩蛋,一款小游戏,你知道吗?
    Json对象与Json字符串互转(4种转换方式)
    [PHP自动化-进阶]005.Snoopy采集框架介绍
    [PHP自动化-进阶]004.Snoopy VS CURL 模拟Discuz.net登陆
    [PHP自动化-进阶]003.CURL处理Https请求访问
    [PHP自动化-进阶]002.CURL模拟登录带有验证码的网站
    [PHP自动化-进阶]001.CURL模拟登录并采集数据
    [注]2015中国程序员生存报告,你苦你先看@^@
    [JavaWeb基础] 016.Struts2 国际化配置
    [工具推荐]_iOS音频批量转换
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3053690.html
Copyright © 2020-2023  润新知