You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi 11.1.5中让FastMM4在指定内存分配编号时中断程序

在FastMM4中按指定内存分配编号触发调试中断

要让FastMM4在分配指定编号的内存块时触发调试器中断,按以下步骤操作:

  • 1. 确认FullDebugMode已启用
    确保项目中已经通过编译指令开启了FullDebugMode,比如在项目文件开头或FastMM4Options.inc中定义:

    {$define FullDebugMode}
    
  • 2. 在程序启动早期添加中断触发代码
    打开项目的主文件(.dpr),在Application.Initialize之前调用FastMM的SetBreakOnAllocatedBlock函数,传入你需要监控的分配编号:

    uses
      FastMM4,
      Forms,
      ...;
    
    begin
      // 替换为你需要中断的内存分配编号
      SetBreakOnAllocatedBlock(1234, True);
      // 如果需要监控多个编号,重复调用即可
      // SetBreakOnAllocatedBlock(5678, True);
      
      Application.Initialize;
      Application.CreateForm(TMainForm, MainForm);
      Application.Run;
    end.
    

    这个函数仅在FullDebugMode生效时起作用,当程序分配到指定编号的内存块时,会立即触发调试器中断。

  • 3. 确保调试信息完整
    为了中断后能看到详细的调用堆栈,需确保项目编译时生成了完整的调试信息:

    • 在Delphi IDE中,进入「Project Options」→「Compiling」→「Debugging」,勾选「Include debug information」和「Generate detailed map file」。
    • 编译目标选择「Debug」模式,避免代码优化导致堆栈信息丢失。

当程序触发中断时,你可以在调试器中查看完整的调用堆栈,定位到内存分配的具体代码位置,从而排查泄漏原因。

内容的提问来源于stack exchange,提问作者SOLID Developper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:24:52