德尔福 XE3。我正在使用 JCL 错误对话框和 FastMM,在我的应用程序中打开了 FullDebug,并将“垃圾”附加到堆栈跟踪中的符号(JCL 和 FastMM):
[74EA3D67] RaiseException
[0041815D] FastMM4.TFreedObject.VirtualMethodError$qqrv
[0054FEC5] Vcl.Controls.TWinControl.CMInvalidate$qqrr24Winapi.Messages.TMessage
当我想要的是:
[74EA3D67] RaiseException
[0041815D] FastMM4.TFreedObject.VirtualMethodError
[0054FEC5] Vcl.Controls.TWinControl.CMInvalidate
[00548735] Vcl.Controls.TControl.WndProc
但仅当应用程序为 Release 编译时。当我为调试编译时,堆栈跟踪是“干净的”。由于我在 FastMM 和 JCL 报告中看到了相同类型的“垃圾”,我认为这两个库都不会造成麻烦。
我说的是带引号的“垃圾”,因为 $qqv 似乎是恒定的,并且字符串的其余部分因运行而异。
我已检查(并重新检查)地图文件和符号设置以及 JCL 符号,但在设置中看不到任何不同。
编辑:毫不奇怪,根本原因是相同的,因为 FastMM 是(我认为)使用 JCLDebug 生成堆栈跟踪......所以修复一个,修复所有。