我正在尝试在我的应用程序中调试标准的普通“已释放对象的校验和不正确 - 对象可能在被释放后被修改”内存问题。我非常熟悉查找原因的工具(保护 malloc 等),并且过去在 XCode UI 中成功地做到了这一点。
但是我遇到的问题是这个内存问题只发生在 xcodebuild 命令行工具创建的构建中,所以我不能使用 XCode UI 复选框。当我通过 Xcode UI 运行我的程序时,我尝试设置复选框(在 Diagnostics->Memory Management 下的方案中)并查看效果(非常慢的性能),但不幸的是,这里从来没有出现过这个问题。然后我返回并从 xcodebuild-built 二进制文件运行我的程序并出现问题,但性能恢复正常,这意味着在此构建期间没有使用任何 UI 标志。
在运行我的程序之前,我尝试设置一些环境变量,即:
MallocGuardEdges=YES
NSZombieEnabled=YES
MallocScribble=YES
但是当我从命令行运行它时,我的 xcodebuild 构建的二进制文件仍然没有影响。
苹果文档似乎暗示我的程序需要使用 GuardMalloc 库支持构建,但是当我在 XCode UI 中设置复选框后使用 xcodebuild 构建程序时,大小没有不同,所以也许我需要在其他地方更改设置为了将这种支持添加到我的二进制文件中?
更新:更正了设置环境变量的命令。