gpt4 book ai didi

delphi - Lazarus 中的内存泄漏,如何使用 Heaptrcon 调试它们?

转载 作者:行者123 更新时间:2023-12-03 15:50:13 25 4
gpt4 key购买 nike

在 Delphi XE 中,我总是使用 ReportMemoryLeaksOnShutDown 来检测退出应用程序时的任何泄漏,我的大多数项目都相当小,找到泄漏通常不太困难。

在 Lazarus 中没有这样的选项,但我刚刚找到了一个名为 Heaptrcon 的选项,更多信息请参见此页面:http://wiki.lazarus.freepascal.org/Profiling

在“项目选项”>“链接”中,我设置了 (-gh) 标志,现在我对任何泄漏的担心已成为现实。我会发布代码,但因为有很多不同的类和单元,我不知道从哪里开始修复这些泄漏,这是一个比我从事过的任何其他项目都要大得多的项目。

这是一些泄露的屏幕截图:

enter image description here

我的调试技能几乎为零,到目前为止,我已经查看了我创建的每个对象或类,然后检查它是否已被释放。因为我正在使用大量 TList 和指针/对象等,所以泄漏可能来 self 猜测的任何地方。

有什么线索或提示可以告诉你从哪里开始寻找吗?我正在查看每个大小为 16 的 block 的调用堆栈,其中有 6 个,这是否意味着有 6 个对象未正确销毁?

我不知所措,从哪里开始?

提前致谢。

最佳答案

您真正需要的信息是与每个泄漏对象关联的分配的堆栈跟踪。它们出现在您的屏幕截图中,但显示为地址而不是函数名称。启用调试信息,名称将显示给您。然后,您可以像在 Delphi 中使用 FastMM 一样跟踪问题。

关于delphi - Lazarus 中的内存泄漏,如何使用 Heaptrcon 调试它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18614351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com