2010/02/06

Xcode debugger的小小反直覺之處

剛剛在Stack Overflow看到一個小問題,問題是這樣的,在Xcode寫objective-c程式時,如果for-loop中只有一行statement,加不加上括號,會影響在debugger中的行為,例如:

版本一:

    int i;
    for(i = 0; ; i++) {
        if(i == 4)
            break;
    }


版本二:

    int i;
    for(i = 0; ; i++)
        if(i == 4)
            break;


當把breakpoint設在for那一行,然後用step over一行一行追蹤流程時,版本一會是這樣的: 首先停在breakpoint,for那一行,ok。

 

按一下step over,跑到if,ok。 

   

按一下step over,跑回for,ok。

   

按一下step over,跑到for外面去了,不直覺

   

再按一下step over,回到if,ok。

 

版本一會跑到for外面去,而版本二不一樣的地方,會跑到右括號},然後跑回for,就ok了。 不過程式語意是一致的,也就是,i最後都是為4 我以前應該也在別的地方看過這樣的行為,不過因為我幾乎都將for-loop加上括號,所以沒有這樣的困擾。不過壞處是我的code有時候會不必要地太長,orz。

No comments:

Post a Comment