0

我正在尝试在我的应用程序中调试特定函数,但发现它很棘手,因为局部变量没有显示出来,代码执行也没有逐行进行。相反,它似乎有点跳跃,我的许多本地范围变量在调试区域中不可见。

该函数是从assetForURL 结果块调用的。

我希望在优化时会出现一些这种行为,但我将它们关闭并遇到同样的问题。这是一些代码,以防万一这可能是原因。

{
UIImageView* newImage = [[tvVC imageViewArray] objectAtIndex:viewIndex];
UIImageView* oldImage = [[tvVC imageViewArray] objectAtIndex:((viewIndex + 1) % 2)];

[newImage setImage:image];
[newImage setBounds:CGRectMake(0, 0, image.size.width, image.size.height)];         
[newImage setTransform:CGAffineTransformMakeScale(scalar * minScalar, scalar * minScalar)];
CGPoint adjust = [scrollView contentOffset];
CGPoint curCenter = [oldImage center];
NSLog(@" offset %f, %f   center %f, %f",adjust.x, adjust.y, curCenter.x, curCenter.y);
}

让我丧命的是 NSLog 打印了有效的结果,但是如果我尝试逐步执行,我实际上无法手动检查adjustcurCenter元素。

使用 Apple LLVM 3.1 编译

谢谢,

4

1 回答 1

0

一个周末的假期和新鲜的头脑有助于解决这个问题。

最后,我切换到 GDB 调试而不是 LLDB。这导致了一个更有用的错误消息,“变量被编译器优化掉”。我想即使优化关闭,编译器也会摆脱那些并不真正需要的愚蠢变量。(我添加它们只是为了让我更清楚地调试,我意识到它们对于代码来说不是必需的)

一旦确定,我只是将调整curCenter确定为“不稳定”,问题就解决了。我仍然看到代码执行中的一些跳跃,但我将其归结为其他优化

于 2012-04-30T13:55:53.870 回答