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
  • 相关阅读:
    笔记:端子镀金厚度
    笔记:C 编译过程
    抽象类与接口类
    面向对象的三大特性之继承
    类命名空间与对象、实例的命名空间 面向对象的组合用法
    初识类和对象
    面向过程与面向对象
    初识面向对象
    hashlib模块configparser模块logging模块
    collections模块和os模块
  • 原文地址:https://www.cnblogs.com/sanghai/p/6629401.html
Copyright © 2011-2022 走看看