问题标签 [fastmm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3121 浏览

delphi - delphi 7,FastMM4 无法安装解决方法

我正在开发一个使用FastMM4来自sourceforge.net的应用程序。所以我FastMM4.pas在开头就添加了uses子句。在应用程序中,我需要像这样运行一个batch文件FinalizeMemoryManager;finalizationunit FastMM4;

那么我的RunTheBatFileAtTheEnd代码是:

为此,我需要SysUtils,shellapi在 fastmm4 单元的使用条款中使用。但是使用它们这个消息来了 在此处输入图像描述

但是,如果我SysUtils,shellapi从用途中删除它就可以了。我仍然需要安装 fastmm4 的所有功能,但是SysUtils,shellapi没有安装 fastmm4

我有一个自己的单元,但它的最终化是在 fastmm4 最终化之前执行的。

谁能告诉我如何解决这个问题?

编辑- 1

我的应用程序

编辑-2:

(在@SertacAkyuz 回答之后),我删除SysUtils了它并且它工作了,但我仍然需要运行批处理文件来打开外部应用程序RunTheBatFileAtTheEnd。原因是..我希望外部应用程序仅在 FastMM4 退出finalization. 这sExeName是将运行文件sFilePaTh(.nam) 的应用程序。任何人都可以告诉如何做到这一点?没有uninstalling FastMM4

0 投票
1 回答
1147 浏览

delphi - Delphi 7,使用FastMM4获取应用路径并打开应用

我正在开发一个应用程序Delphi 7,它将运行并显示由FastMM4.pas.

该应用程序将安装在系统的任何位置。我已经修改了它,FastMM4.pas以便它CreateProcess(简而言之执行我的应用程序)我 以前的问题Sertac Akyuz 的答案中的代码

leakTracker.exefastmm4的日志文件作为参数,打开文件并显示。修改后的fastMM4.pas将用于任何其他应用程序。

这工作正常,但我已经硬编码了path因为得到我的应用程序路径..

FAstMM4.pas finalization我有这个

因为我不能拥有

*1 - SysUtils.pas- 在 FastMM4.pass 中,因为这将卸载 fastmmm4

*2 - Registry.pas- 搜索leakTracker安装路径但会卸载 fastmm4

*3 - paramstr(0) - 它在应用程序结束时给出错误。

*4 - unitWithSysRegis- 使用 SysUtils,Registry 在 Fastm4 使用子句中也是不可能的。

所以我被困在如何leakTracker.exe通过CreateProcess获取日志文件的路径并将其发送到“leakTracker.exe”。

0 投票
4 回答
1195 浏览

delphi - Delphi 7、DUnit 和 FastMM 错误地报告字符串

我正在使用 DUnit 和 FastMM 来捕获未完成的内存块,但似乎有一个错误。我不知道它是在 FastMM、DUnit 还是在 Delphi 本身中,但这里有:

  • 当我的测试用例有内部字符串时,测试会因内存泄漏而失败。如果我在不关闭 DUnit GUI 的情况下再次运行相同的测试,则测试通过。DUnit GUI 测试也会出现同样的情况,我相信出于同样的原因。我的应用程序中没有泄漏,证明 FastMM 在这些情况下不会生成泄漏报告。

  • 问题1:有没有办法在不设置 AllowedMemoryLeakSize 的情况下忽略它们

  • 问题2:我使用的是Delphi 7,如果这个修复在Delphi XE 中有什么消息吗?

  • 我的实际测试配置:

    • test.FailsOnNoChecksExecuted := True;
    • test.FailsOnMemoryLeak := True;
    • test.FailsOnMemoryRecovery := False;
    • test.IgnoreSetUpTearDownLeaks := True;

这是一个示例代码(仅实现)

谢谢!!!!

更新:我面临的问题记录在http://members.optusnet.com.au/mcnabp/Projects/HIDUnit/HIDUnit.html#memoryleakdetection 但是除了运行相同的测试之外,相同的链接没有提供解决方案再次。

0 投票
1 回答
821 浏览

delphi - FastMM/DXE2 仅在使用调试器时报告?

我正在尝试使用 FastMM 4.99 版(根据顶部的评论FastMM4.pas)。我已按照 说明使用带有堆栈跟踪 完整调试模式,并且当我在 IDE 调试器下运行我的 .exe 时发现泄漏。例如

FastMM 泄漏报告对话框

但是,当我尝试从命令提示符或双击 Windows 资源管理器运行可执行文件时,我没有报告任何泄漏。UnicodeString 泄漏可能是假的,但我确信 TINiFile 泄漏是真实的。不使用调试器时如何使 FastMM 报告/日志泄漏?

更新:该项目还使用 madExcept 3.0n:.dpr 文件确实将 FastMM4 作为其使用条款中的第一项。还需要什么才能使这两者共存吗?

0 投票
5 回答
11574 浏览

delphi - Delphi中抽象错误的可能原因?

在一个 Delphi 7 项目中,我们安装了 FastMM。不久之后,我们注意到其中一个表单在关闭时开始发出抽象错误消息。我已经对此进行了广泛的调试,但到目前为止我找不到原因。此错误消息的通常原因似乎不适用于此处。该应用程序没有定义抽象类。我还在表单中搜索了可能使用 TStrings 或类似的东西。最重要的是,我们没有(好吧,我们认为我们没有)对此表单进行任何更改。它刚刚坏了。

  1. 除了尝试调用未实现的方法之外,还有其他可能导致此错误的原因吗?
  2. FastMM 是否有可能在应用程序中启用了一些隐藏的错误,直到现在仍然隐藏?

如果这些问题的答案是否定的,那么我将继续搜索未实现的方法调用,并为我没有遗漏其他内容而松了一口气。

0 投票
2 回答
839 浏览

delphi - Delphi 7、FastMM 和 DUnit GUITesting 错误的内存泄漏测试失败

我在 FastMM 误报方面遇到了一些问题。这一次,泄漏是在案例测试表格中。它与我在这里描述的非常相似。

我有一个表单和一些普通的旧 VCL 控件。第一次测试运行显示实际上不存在的泄漏。第二次运行没有泄漏。我搜索了所有 DUnit 源代码,但找不到修复它的原因。有人可以帮助我吗?

我不能运行两次测试,因为: 1. 它将在持续集成中运行;2.有些测试确实需要一些时间,加倍它是不明智的。

我检查了 DUnit GUI 中的最后 3 个选项: - 在关机时报告内存泄漏类型 - 如果内存泄漏,则测试用例失败 - 在 SetUp/TearDown 中忽略内存泄漏

以下是示例代码:

0 投票
2 回答
183 浏览

delphi - 为什么包含 FastMM 会导致 EInvalidTypecast 错误?

这是使用 Delphi XE2 和 FastMM 4.99 以及 Win7-64 机器上的 32 位程序。

我试图使用 FastMM 来检查我一直在研究的一个小程序。该程序包括一个数据模块,该模块位于项目的自动创建表单列表中。数据模块只包含一个 TADOConnection 对象。

当我在 FastMM 中启用 FullDebugMode 时,退出程序时出现无效的类型转换错误。罪魁祸首似乎在于释放数据模块(错误发生在 中TADOConnection.GetADODataSet)。谁能建议为什么会这样?

0 投票
1 回答
379 浏览

delphi - 如何获取实例已泄漏内存的自定义结构的名称?

我正在使用一个解析器,它将通过 FASTMM4 内存泄漏报告并将所有相关数据存储在定制的结构/类中。我使用VirtualTreeView将每个已泄漏实例的类显示为树中的一个节点。- 请注意第一个节点表示未知。这是因为 FASTMM 调用方法AClass来确定天气它是否是一个类。当它找到自定义结构时,会将它们标记为未知,这不会使我的报告分析器非常有效,因为大多数内存泄漏来自这些自定义结构和记录。

问题:有没有办法使用 DebugInfo 或JVCL等其他工具来收集这些调试符号并将它们的内存地址与内存泄漏报告文件中的内存地址进行比较?我希望我的树停止显示 UNKNOWN 并显示这些自定义结构的名称。我是 Delphi 编程的新手,甚至是处理内存泄漏的新手,所以任何帮助都意义重大!

0 投票
1 回答
448 浏览

delphi - 在没有关闭对话框的情况下生成 FASTMM 报告

如果可能,我希望我的 Delphi 项目在程序运行时生成 FASTMM 内存泄漏报告,并在关闭时附加到该报告,而不必每次关闭程序时都看到此对话框。

如果无法让 FMM 在运行时创建报告并对其进行 N 次编辑,我至少想摆脱烦人的对话框,因为我已经拥有比对话框显示的详细得多的报告。

0 投票
0 回答
397 浏览

delphi - 使用 FASTMM4 生成报告而不写入文件

我试图在用 Delphi 编写的 GUI 中查找内存泄漏(这不是一项简单的任务,因为代码是巨大的——数万行代码)。我制作了一个文件解析器,它分析由 生成的报告FASTMM,并创建TMemoryLeak实例并将它们存储在一个整洁的VirtualNodeTree.

然而,问题在于生成这样的报告然后对其进行解析需要大量时间。有一个名为 的 FMM 方法CheckBlocksOnShutDown,我只需单击一个按钮就可以隔离和调用它,但是,它再次创建了一个全新的报告,我必须遍历它,并将整个报告存储在我的 NodeTree 中。我想通过反复单击

我想调整 FASTMM 代码,使其“随时随地”创建内存泄漏实例,而不向文件写入任何内容。这可行吗?(类似问题