• valgrind使用入门


      valgrind:a suite of tools for debugging and profiling programs

      1)简介:Valgrind用于调试、分析Linux的可执行文件。

      2)安装:

    yum install valgrind.x86_64 # yum search valgrind

      3)常用选项:--tool=<toolname>:运行Valgrind的工具。默认是memcheck,其他可用值有cachegrind、callgrind等。

      4)示例:

    int main()
    {
        int *p1 = new int;
    
        int *p2 = NULL;
        cout << *p2 << endl;
    
        return 0;
    }

      编译(加-g选项)得到a.out,再执行valgrind ./a.out,以下是其输出:

    ==16564== Memcheck, a memory error detector # 默认使用memcheck工具
    ... ...
    ==16564== Invalid read of size 4 # 在test.cpp第9行出现非法内存访问(且size为4)
    ==16564==    at 0x4008B2: main (test.cpp:9)
    ==16564==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
    ... ...
    ==16564== Process terminating with default action of signal 11 (SIGSEGV)
    ==16564==  Access not within mapped region at address 0x0
    ==16564==    at 0x4008B2: main (test.cpp:9)
    ... ...
    ==16564== HEAP SUMMARY:
    ==16564==     in use at exit: 4 bytes in 1 blocks # 内存泄漏情况
    ==16564==   total heap usage: 1 allocs, 0 frees, 4 bytes allocated
    ==16564== 
    ==16564== LEAK SUMMARY:
    ==16564==    definitely lost: 0 bytes in 0 blocks
    ==16564==    indirectly lost: 0 bytes in 0 blocks
    ==16564==      possibly lost: 0 bytes in 0 blocks
    ==16564==    still reachable: 4 bytes in 1 blocks
    ==16564==         suppressed: 0 bytes in 0 blocks
    ... ...
    Segmentation fault

    不断学习中。。。

  • 相关阅读:
    论文尾注后无法插入分节符
    实现java对象排序的三种方式
    java数组的定义方式
    Canvas
    正则xss
    mongoDB学习记录
    查找,学习,记录
    地址
    node实战学习纪录
    nodejs学习记录
  • 原文地址:https://www.cnblogs.com/hanerfan/p/5071762.html
Copyright © 2020-2023  润新知