2012-04-26 21 views
0

我想在我的應用程序中調試特定的功能,但我發現它很棘手,因爲本地變量沒有顯示出來,也沒有逐行執行代碼。相反,它似乎跳了一下,我的許多本地作用域變量在調試區域中不可見。Xcode調試沒有遵循線路進度,優化關閉

該函數被調用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的打印有效的結果,但如果我嘗試和逐步完成,我不能真正檢查手動調整curCenter元素。

使用蘋果LLVM 3.1

感謝,

回答

0

一個週末客場和清新的頭腦編譯幫助這個問題。

最後,我切換到GDB調試與LLDB。這導致了一個非常有用的錯誤消息,'由編譯器優化的變量'。我猜即使在優化關閉的情況下,編譯器也會擺脫那些並非真正需要的愚蠢變量。 (我只加了他們,使調試更清楚地知道,我知道他們是沒有必要的代碼)

一旦成立,我只是確定了調整curCenter爲「揮發性」和問題已解決。我仍然在代碼執行過程中看到一些小小的變化,但是我正在努力達到其他優化