Heob

要指定 Heob 的设置,请转到分析 > Heob

{Heob settings}

额外参数中,输入运行 Heob 的附加参数。要列出 Heob 控制台中的可用参数,在此字段中输入-H 并按 Enter

例如,使用-oleaks.html 选项将泄露数据记录到 HTML 文件中。与此选项一起使用,您还可以使用-g2 选项在文件中将泄露可视化分组,并使用-L1024 选项记录文件中最多 1024 字节的泄露内容。例如,-oleaks.html -g2 -L1024

要将更改保存为默认设置,请选择

要删除自定义设置配置文件,请选择配置文件,然后选择删除

以下部分更详细地描述了可用选项。

记录结果

检查结果显示在内存检查视图中,并记录到文件中。在XML 输出文件中指定文件名。Heob 在项目目录中创建该文件。

您可以使用进程标识符(PID)作为文件名中的变量。例如,leaks-%p.xml。这将 Heob 注入到子进程中。

您还可以使用的其他变量包括%P(父 PID)和%n(应用程序名称)。

如果您使用变量,Qt Creator 无法自动打开文件,但您可以从项目目录中打开它。

处理异常

处理异常中,选择关闭以使用标准异常处理程序,并在应用程序崩溃时自动附加调试器。这仅当您通过选择首选项 > 调试器 > 常规 > 使用 Qt Creator 进行死后调试将 Qt Creator 注册为死后调试器时才有效。

选择打开以使用检查故障原因和位置以及是否因缓冲区溢出而发生故障的 Heob 异常处理程序。

仅选择以禁用除安装异常处理器之外的所有 Heob 功能。如果应用崩溃,则仅显示崩溃的堆栈跟踪。因此,此选项主要在使用控制台上的 Heob 或运行子进程时非常有用。

错误时抛出异常

选择错误时抛出断点异常复选框,以便在应用程序运行时显示错误。

如果禁用此选项,错误(例如双释放释放无效指针内存不足)仅将所有收集到的数据写入结果文件,您只能在应用程序运行结束时看到它们。

如果启用此选项,应用程序将停止在错误位置。当与带调试器运行选项一起使用时,该选项在调试器下运行 Heob,这非常有用。

保护页面

页面保护中,选择关闭以使用标准内存分配函数并仅启用内存泄漏检测。

选择之后将保护页面置于每个分配块之后并在访问时抛出异常。选择之前将保护页面置于每个分配块之前。这些选项会消耗内存并减慢检查速度,因此仅推荐用于64位或短运行程序。

选择释放内存保护,当释放所有分配页面时,以防止它们的地址空间再次使用。这可用于使用后释放双释放检测。然而,对于32位程序,可用的内存地址空间可能很快耗尽。

处理泄漏数据

泄漏详细信息中,确定在进程退出时如何处理收集到的泄漏数据。选择意味着不收集泄漏数据。如果激活泄漏类型检测,Heob 在进程退出时可能需要更多时间来收集数据。

选择简单将所有未释放的内存写入结果文件。

选择检测泄漏类型以解析所有静态和全局内存块对泄漏的引用。可达块被标记为可达,并递归检查其他引用。如果找到引用,则标记为间接可达。剩余的块将被检查以引用彼此,并标记为间接已丢失共同已丢失(如果块相互引用)。没有任何引用的块被标记为已丢失。选择检测泄漏类型(显示可达的)以在结果文件中记录可达的块。

选择模糊检测泄漏类型以在内存块具有对任何地址的引用时标记它们为可达间接丢失。该选项在与某些自定义分配器(如ffmpeg中的av_malloc())一起使用时很有用,这些分配器仅在分配块的某个地方保留一个地址,而直接不引用分配块的开始。选择检测泄漏类型(显示可达的)以在结果文件中也记录可达的块。

最小泄漏大小中,选择要检测的字节大小的泄漏。

控制泄漏记录中,选择关闭以记录所有泄漏。在运行时不能更改泄漏记录。

要在不启动泄漏记录的情况下启动 Heob,选择开启(禁用启动)。在 Heob 控制台中,切换录制清除所有结果,或选择显示将所有当前泄漏记录到结果文件中。在进程退出前打开文件以查看其内容。

当启动Heob时开始泄漏记录,并保留控制记录的选项,请选择开启(启动启用)

另请参阅使用Heob检测内存泄漏如何:分析分析器,以及分析代码

©版权所有 © 2024 The Qt Company Ltd。本文档中包含的贡献是各自所有者的版权。提供给您的文档是在自由软件基金会发布的GNU自由文档许可证版本1.3的条款下许可提供的。Qt及其相关标志是芬兰及全球其他国家的The Qt Company Ltd的商标。所有其他商标均为各自所有者的财产。