我正在尝试使用Delphi 7调试大型应用程序中的内存使用情况.我能够安装fastmm debug full dll并使用它来解决一些泄漏问题.
我还安装了内存使用跟踪器,允许我查看分配了哪些块以及它们的大小.
我的问题是,有没有办法找出块的分配位置?我知道这是可能的,因为如果没有释放内存,则会打印堆栈跟踪.有没有办法在fastmm'戳'让它打印给定分配的堆栈跟踪?
附带问题:如果分配的起始地址已知,有没有办法找出对象是哪个类?(假设分配是针对一个对象的.
您可以:
LogAllocatedBlocksToFile程序。如果它的ALastAllocationGroupToLog参数小于AFirstAllocationGroupToLog或为零,则记录所有块及其分配调用堆栈。但是,如果您的应用程序有很多内存分配,请准备好长时间等待。我经历了大约 4 小时的等待时间和 1.5Gb 的结果文件。(旁注:使用glogg查看这么大的文件)FastMM4.pas以便实现LogCallStack将在界面中可见。或者您可以尝试直接从FastMM_FullDebugMode.dll附带问题:尝试使用DetectClassInstance函数。
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |