我正在尝试使用Apple Snow Leopard 10.6.8上的Xcode v3.2.6调试使用Delphi XE2和Update 1编译的FireMonkey应用程序.我能够在Xcode中加载项目,编译它并在iPhone模拟器中运行它.
但是,调试似乎不起作用.当我使用"Run/Debug - Breakpoints On"启动项目时,我在Xcode中设置的Pascal源文件中的所有断点都被忽略,并且IDE在代码执行时不会中断程序.
我创建了一个"调试"配置,并在"部署"选项中取消选择条目"在代码中删除调试符号"和"剥离链接产品".在"构建选项"中,选择"带有dSYM文件的DWARF"作为"调试信息格式".
我安装了带有Update 1的Delphi XE2附带的FireMonkey/Free Pascal/Xcode工具.
在关闭UAC并且当前用户是本地管理员(而不是本地"管理员"帐户)的成员的Windows 8.1系统上,调用" IsUserAnAdmin "返回"false".在Windows 7中,使用相同的设置,调用"IsUserAnAdmin"将返回"true".MSDN文章指出,对此功能的支持以Windows Vista/Server 2008结束,因此它在Windows 8/8.1中不再起作用了吗?
似乎设置ReportMemoryLeaksOnShutdown := true对使用Delphi 10.2 Tokyo创建的程序没有任何影响(我在Windows和Linux程序中尝试过).即使有明显的内存泄漏,也没有任何报告.
有人能证实吗?还有一种方法可以检查Linux程序中的内存泄漏吗?在Windows上,我可以使用madExcept.
------------------编辑2 ------------------
在Delphi 10.2中,ReportMemoryLeaksOnShutdown := true似乎只适用于未标记为控制台应用程序的程序.一旦我注释掉该行,{$APPTYPE CONSOLE}我收到了所需的错误消息(当我在Windows上运行程序时).
------------------编辑1 ------------------
这是请求的示例:
program WeakRefTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
SysUtils;
type
TParent = class;
TChild = class
private
{$IFDEF AUTOREFCOUNT} [Weak] {$ENDIF}
Parent: TParent;
public
constructor Create (const Parent: TParent);
destructor Destroy; override;
end; { TChild }
TParent = class
private
Child : TChild;
public
constructor Create;
destructor Destroy; override;
end; { TParent }
constructor TChild.Create(const Parent: TParent);
begin
inherited …Run Code Online (Sandbox Code Playgroud)