在 FastMM 堆栈跟踪中看不到单元名称/方法

Can not see unit names / methods in FastMM stack trace

我想让我的堆栈跟踪包含单元名称/方法/行。任何可以真正帮助提高可读性的东西。我知道这在过去有效,但它已经停止工作了...

我已启用

  {$DEFINE FullDebugMode}
  {$DEFINE RawStackTraces}
  {$DEFINE CheckHeapForCorruption}
  {$DEFINE EnableMemoryLeakReporting}
  {$DEFINE ClearLogFileOnStartup}
  {$DEFINE UseOutputDebugString}

我在可执行编译目录中有32+64位的dll。

我已经为 32 位/64 位启用了项目选项中的所有调试选项(符号引用设置为引用信息)。

我使用的是最新版本。

我将 FastMM 列为项目 dpr 文件中 uses 子句的第一个单元。

我用的是Delphi XE4.

我 100% 检查了正确的定义组是否通过输入乱码来引发编译时错误(也就是说,我没有在 release/debug 构建中做错什么)

我还能尝试什么?

.....

@fpiette 建议我发布一个测试项目。我会把它包括在这里...

Project1.dpr

program Project1;
uses
  FastMM4,
  Vcl.Forms,
  testmem in 'testmem.pas' {Form1};
{$R *.res}
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

testmem.pas

unit testmem;
interface
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.ExtCtrls, Vcl.StdCtrls;
type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Panel1: TPanel;
    BitBtn2: TBitBtn;
    SpeedButton1: TSpeedButton;
    procedure FormCreate(Sender: TObject);
  private
  public
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
b: TButton;
begin
b := TButton.Create(nil);
b.Parent := Self;
b.Free;
b.Free;
end;

这在我将预编译的 dll 移动到目录后起作用了...不知道为什么它对我自己的项目不起作用,因为我做了完全相同的...只是在项目选项中检查了相同的调试设置我在Delphi“目标”相同类型的构建中。

解决方案在项目选项-链接选项中启用调试信息/详细地图文件。

不知何故你的项目已损坏。

从头开始重新创建项目(dpr 和 dproj,添加您手动添加到 dpr 的所有 pas 文件和代码)并确保选项如 How to get a stack trace from FastMM

中所述