gpt4 book ai didi

debugging - 如何打破 __NSAutoreleaseNoPool

转载 作者:行者123 更新时间:2023-12-04 02:37:19 25 4
gpt4 key购买 nike

我越来越喜欢

*** __NSAutoreleaseNoPool(): Object 0x1961180 of class NSEvent autoreleased with no pool in place - just leaking



在运行时发出警告,并且不知道原因是什么。粗略的谷歌表示这是一个我可以用 Xcode 中断的符号,但是通过运行>管理断点>添加符号断点或简单地通过断点管理窗口将其添加为符号断点,会导致断点旁边带有 -而不是支票,我认为这是一个无法找到的符号。

我试过用两个下划线,一个下划线添加符号“__NSAutoreleaseNoPool”,现在我只是觉得自己很愚蠢。错误继续被记录并且没有断点被击中。任何用于中断 Obj-C 符号或调试的指针将不胜感激。

[编辑:在大约 10 次(另外 10 次,总共有几十次,包括至少两次 Xcode 重新启动)运行后,我将“待定断点 9 -“__NSAutoreleaseNoPool”已解决”打印到我的控制台,断点开始工作。有没有办法强制挂起的断点实际解决?]

最佳答案

要真正回答您的问题,请查看 NSDebug.h .在那里你会找到一条评论,这是其中的一部分:

NAME OF ENV. VARIABLE                  DEFAULT  SET TO...
NSDebugEnabled NO "YES"
NSZombieEnabled NO "YES"
NSDeallocateZombies NO "YES"
NSHangOnUncaughtException NO "YES"

再往下是这些评论:
// Functions used as interesting breakpoints in a debugger
// void __NSAutoreleaseNoPool(void *object);
// Called to log the "Object X of class Y autoreleased with no
// pool in place - just leaking" message. If an environment
// variable named "NSAutoreleaseHaltOnNoPool" is set with string
// value "YES", the function will automatically break in the
// debugger (or terminate the process).

// void __NSAutoreleaseFreedObject(void *freedObject);
// Called when a previously freed object would be released
// by an autorelease pool. If an environment variable named
// "NSAutoreleaseHaltOnFreedObject" is set with string value
// "YES", the function will automatically break in the debugger
// (or terminate the process).

所以你真的不需要设置这些断点;只需设置适当的环境变量。你可以从你的 e.g. 做后者 .bashrc或者在 Xcode 4 中,您可以编辑“方案”的“运行”部分并将它们设置在那里——这就是我所做的,它工作得很好。

关于debugging - 如何打破 __NSAutoreleaseNoPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com