我正在使用FastMM和JCL调试信息来跟踪应用程序中的内存泄漏。但是我的插件是在Delphi中编译的dll,dll和主应用程序都使用通用的运行时包。现在,当我关闭应用程序时,它会在文本文件中生成内存泄漏报告,这很好,但它包含仅针对主应用程序的堆栈跟踪 。如果插件dll中发生内存泄漏,则堆栈跟踪会导致LoadPlugins;主要应用程序! 当然我的插件包含JCL调试数据(它插入到.dll二进制文件中)。
问题出在哪里?那是因为运行时包的使用吗? 或者某些我忘记启用/禁用的开关(定义)? 提前致谢
答案 0 :(得分:2)
您是否在FastMM4Options.inc中设置了FullDebugMode选项和内存管理器共享选项(ShareMM及以下内容)? 您是否也使用调试信息进行编译?
答案 1 :(得分:0)
FastMM的作者Pierre回答了我的问题。如果有人感兴趣,解决方案是不要在关机时卸载插件以保持堆栈跟踪和放大器。对象类型可访问。然而,这会导致关闭时出现大量错误(因为FastMM被卸载了两次左右),所以最后我不得不将FastMM移动到共享包...