Valgrind 内存检查
在项目的运行设置中为所有项目全局或为每个项目单独设置Valgrind首选项。
要为 Valgrind 设置全局首选项,请选择首选项>Analyzer 。在Memcheck Memory Analysis Options 中设置 Memcheck 首选项。
在Extra Memcheck arguments 中,指定用于启动可执行文件的附加参数。
设置堆栈跟踪长度
堆栈跟踪可能会变得相当大且令人困惑,因此从下往上读取堆栈跟踪会有所帮助。如果堆栈跟踪不够大或太大,请选择首选项>Analyzer ,然后在Backtrace frame count 字段中定义堆栈跟踪的长度。
跟踪未初始化内存的来源
Memcheck 还会报告未初始化值的使用情况,最常见的信息是Conditional jump or move depends on uninitialised value(s). 为确定这些错误的根本原因,默认情况下选择Track origins of uninitialized memory 复选框。你可以清除它,使 Memcheck 运行得更快。
查看摘要
Memcheck 会在客户端应用程序结束时搜索内存泄漏。要查看发生泄漏的数量,请在Check for leaks on finish 字段中选择Summary Only 。要查看每个泄漏的详细信息,请选择Full 。
显示可到达块和间接丢失块
可到达块是指由指针或指针链指向的块,在应用程序退出前可能已被释放。间接丢失的块被认为是丢失的,因为指向它们的所有块本身都丢失了。例如,丢失的根节点的所有子节点都是间接丢失的。
默认情况下,Memcheck 不会报告可到达块和间接丢失块。要报告它们,请选择Show reachable and indirectly lost blocks 。
抑制错误
Memcheck 会检测系统库中的许多问题,如预装在操作系统中的 C 库。由于无法轻松修复这些问题,因此需要抑制它们。Valgrind 会在启动时读取要抑制的错误列表。系统构建时,./configure 脚本会创建一个默认的抑制文件。
如果项目的某些部分存在无法修复的错误,但又不想被提醒,则可以编写自己的抑制文件。在MemCheck Memory Analysis 对话框中选择Add 添加抑制文件。
有关编写抑制文件的更多信息,请参阅 Valgrind 文档中的抑制错误。
另请参阅 使用 Memcheck 检测内存泄漏、剖析函数执行、在外部应用程序上运行 Valgrind 工具、为项目指定 Valgrind 设置,以及Valgrind Callgrind。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.