zoukankan      html  css  js  c++  java
  • 不只是内存分析工具~valgrind

    体系结构:原理介绍·参考好文:应用 Valgrind 发现 Linux 程序的内存问题

    简单组一个摘要:

    Valgrind包括如下一些工具:

    1. Memcheck。这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。这也是本文将重点介绍的部分。
    2. Callgrind。它主要用来检查程序中函数调用过程中出现的问题。
    3. Cachegrind。它主要用来检查程序中缓存使用出现的问题。
    4. Helgrind。它主要用来检查多线程程序中出现的竞争问题。
    5. Massif。它主要用来检查程序中堆栈使用中出现的问题。
    6. Extension。可以利用core提供的功能,自己编写特定的内存调试工具。

    一下是自己常用的配置选项:

    注意不能使用-O2进行优化
    alias gcc='gcc -g -Wall -pg -ggdb -pedantic -Wextra'
    alias clang='clang-3.8 -Wall -g -pg -ggdb -pedantic -Wextra' 
    alias g++='g++ -g -Wall -pg -fno-inline -ggdb -pedantic -Wextra'
    alias clang++='clang++-3.8 -g -Wall -std=c++11 -pg -fno-inline'

    此工具要比gprof 好用, 

    alias valgrind2='valgrind --trace-children=yes --child-silent-after-fork=yes --time-stamp=yes --tool=callgrind'
    alias callgrind_annotate='callgrind_annotate --auto=yes --tree=both --inclusive=yes' 
    valgrind2 ./exe.out 
    callgrind_annotate callgrind.out.pid > exe.log

    阅读源码,查看调用关系:

    G
    ?source
    开始一步步往下看
    alias valgrind='valgrind --trace-children=yes --child-silent-after-fork=yes --xml=yes --xml-file=log.core --tool=memcheck --leak-check=full'
    valgrind ./exe 

     使用excel 查看该文件, kind列以及后面的5列, 查看。

    比较实用gprof工具的情况:

    -pg
  • 相关阅读:
    Java暑期学习第二十天日报
    Java暑期学习第十六天日报
    Java暑期学习第十七天日报
    使用C#创建SQLServer的存储过程 附带图片
    ASP.NET树形
    什么时候使用webservice1
    ASPxGridView动态增加列
    winform中treeView使用通用类
    Winform使用C#实现Treeview节点"正在展开..."效果
    C#实现字符串加密解密类
  • 原文地址:https://www.cnblogs.com/sanghai/p/6629401.html
Copyright © 2011-2022 走看看