奇怪的GDB错误无法追踪

时间:2010-05-26 07:24:16

标签: objective-c iphone-sdk-3.0 gdb

我在gdb中遇到这个奇怪的错误,我无法跟踪确切的代码行来追踪错误。有人知道这种类型的错误吗?这是我在gdb中得到的东西

*** -[CALayer sublayers]: message sent to deallocated instance 0x911c2a0
(gdb) po 0x911c2a0
Program received signal SIGTRAP, Trace/breakpoint trap.
0x020993a7 in ___forwarding___ ()
The program being debugged was signaled while in a function called from GDB.
GDB has restored the context to what it was before the call.
To change this behavior use "set unwindonsignal off"
Evaluation of the expression containing the function (_NSPrintForDebugger) will be   abandoned.
(gdb) info symbol 0x911c2a0
No symbol matches 0x911c2a0.
(gdb) 

4 个答案:

答案 0 :(得分:2)

您可以尝试以下操作以查看错误CALayer的分配位置:

(gdb) info malloc 0x911c2a0

我不知道gdb是否与僵尸对象配合得很好,但显然它似乎有一些限制。

答案 1 :(得分:0)

显然,你有一个内存管理错误。

你根本没有追踪确切的线路。要获取堆栈跟踪,请键入bt,或者只需查看调试器窗口(运行→调试器)。

po表示“打印Objective-C对象”。由于该特定实例已被解除分配,po - ing将导致进一步的错误。)

答案 2 :(得分:0)

尝试使用NSZombieEnabled设置为YES可执行环境进行调试:

  

激活NSZombieEnabled   申请中的设施:

     

选择项目>编辑活动   可执行文件以打开可执行文件信息   窗口。单击“参数”。单击添加   “要设置的变量”中的(+)按钮   在环境“部分。输入   名称列中的NSZombieEnabled和   “值”列中的“是”。确保   那个复选标记   选择NSZombieEnabled条目。

您可能还想添加几个断点来帮助您调试它们:

fb -[_NSZombie init]
fb -[_NSZombie retainCount]
fb -[_NSZombie retain]
fb -[_NSZombie release]
fb -[_NSZombie autorelease]
fb -[_NSZombie methodSignatureForSelector:]
fb -[_NSZombie respondsToSelector:]
fb -[_NSZombie forwardInvocation:]
fb -[_NSZombie class]
fb -[_NSZombie dealloc]

答案 3 :(得分:0)

我已经解决了这个问题。问题是由于视图控制器。视图控制器已发布,然后调用该方法。但奇怪的gdb没有显示有关viewController的任何内容....没有打开NSZombie帮助。