• Linux 下调试之valgrind 工具说明二


    一.  valgrind 工具介绍

    valgrind 是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具集。

    其中,包括 memcheck 工具是定位内存泄露或溢出等问题。这篇文章介绍 memcheck 工具的具体使用方法,其他的工具以后有机会再介绍。

    valgrind 工具集常用选项如下:

    (1)   --tool=运行 valgrind 中名为 toolname 的工具,默认 memcheck,还可以为cachegrid、drd、lackey、callgrind、helgrind、massif等;

    (2)--quiet:安静地运行,只打印错误信息;

    (3)--verbose:更详细的信息,增加错误数统计;

    (4)--trace-childer=no | yes:跟踪子线程;

    (5)--track-fds=no | yes:跟踪打开的文件描述;

    (6)--time-stamp=no | yes:增加时间戳到 Log 信息;

    (7)--log-fd=输出Log信息到文件描述符;

    (8)--log-file=输出Log信息到指定的文件;

    (9)--xml=yes:将错误信息以xml格式输出,只有memcheck可用;

    (10)--xml-file=XML输出到指定文件;

    (11)--error-limit=no | yes:如果错误太多,则停止显示新错误;

    (12)--error-exitcode=如果发现错误,则返回错误代码;

    (13)--leak-check=no | summary | full:对发现的内存泄露给出的信息级别,只有memcheck可用。(建议添加)

    (14)--show-reachable=no | yes:用于控制是否检测控制范围之外的泄漏,比如全局指针、static指针等。

    (15)–num-callers=(num):这个值默认是12,最高是50。表示显示多少层的堆栈,设置越高会使Valgrind运行越慢而且使用更多的内存,但是在嵌套调用层次比较高的程序中非常实用。

    (16)--trace-children=no | yes:是否跟入子进程。
     

    二. valgrind 工具集使用

    valgrind 工具集包括很多的工具,每个工具将分别用于排查代码中出现的不同类型 bug。

    valgrind 工具集中,常用的工具如下:

    Memcheck,Callgrind,Cachegrind,Helgrind,Massif 等工具。

    这些工具一般使用方法,即终端输入如下命令:

    valgrind --tool=工具名  程序名

    例如,当使用 Memcheck 工具检测一些内存问题时,可以使用如下命令定位问题:

    valgrind --tool=memcheck --leak-check=full 程序名

    注意:编译程序需要加上 -g 选项, 即包含调试信息,以便 Memcheck 工具检测到错误消息包含确切的 C 代码行号

  • 相关阅读:
    视频去水印免费软件有哪些?快来收藏这三款实用工具
    Tmuxs -高效使用Linux terminal
    Llama2-Chinese项目:2.2-大语言模型词表扩充
    VS编译器常见的错误
    首个多云检索开源项目 Clusterpedia 正式进入 CNCF 沙箱
    eslint和prettier实现代码格式化
    Linux常用命令字典篇
    phpcms头像上传漏洞
    每日word+excel+ppt----雷打不动,好吗!!
    MySQL日期函数
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/127853072