Valgrind Memcheck
您可以在项目的运行设置中,为所有项目统一设置Valgrind首选项,或为每个项目单独设置。
要设置 Valgrind 的全局首选项,请选择“Preferences ”>“Analyzer ”。在“Memcheck Memory Analysis Options ”中设置 Memcheck 首选项。

在“Extra Memcheck arguments ”中,为启动可执行文件指定附加参数。
设置堆栈跟踪长度
堆栈跟踪可能非常冗长且难以理解,因此从下往上阅读会有所帮助。如果堆栈跟踪长度不够或过长,请选择“Preferences ” > “Analyzer ”,并在“Backtrace frame count ”字段中定义堆栈跟踪的长度。
追踪未初始化内存的来源
Memcheck 还会报告未初始化值的使用情况,最常见的提示信息为“Conditional jump or move depends on uninitialised value(s). ”。为确定这些错误的根本原因,Memcheck 会追踪未初始化内存的来源。取消勾选“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.