XCode调试器中的错误?

时间:2009-08-17 00:09:47

标签: iphone cocoa-touch xcode ios-simulator

我正在使用一个iPhone应用程序,它正在使用我拥有源代码的外部库。在调试期间,一些对象在调试器中列为0x0但应用程序运行正常。此外,一些对象地址指向错误的东西。 这些符号位于外部库中。如果我实际在外部库中跟踪文件,地址就可以了。

有没有人建议如何阻止这种行为?

3 个答案:

答案 0 :(得分:1)

更新:目标设置>构建标签> GCC 4.2代码生成> “为Thumb编译”

我关闭了此目标设置,gdb问题消失了。

-

嗨约翰。

我理解你所指的是什么。我也看到一个问题,gdb和NSLog()在我的代码的某些部分给出了不同的指针结果。

在一个煮沸的示例中,当我在此函数的任何一行上设置断点时,gdb无法报告“指针”的正确值:

id testPointer( id pointer )
{
    NSLog( @"pointer value: %p", pointer );

    @try
    {
        NSLog( @"foo" );
    }
    @catch ( NSException *e )
    { }
    @finally
    { }

    return pointer;
}

答案 1 :(得分:0)

正如zPesk所说,0x0是nil,这是尚未初始化的对象的常见值(特别是实例变量)。我不确定你的意思是“指向错误的东西。”如果尚未初始化本地(堆栈)变量,则它可能指向任何随机地址,直到它被初始化。你遇到什么问题?

答案 2 :(得分:0)

您是否能够解决此问题?我也注意到在混合Thumb和ARM模式时gdb中的奇怪行为。例如,似乎gdb报告的变量地址与使用printf(“%p \ n”)语句报告的地址完全相差64个字节。也许gdb需要明确告知当前的操作模式是ARM还是Thumb ......?