2012-07-28 92 views
2

我需要調試一個時間關鍵性的崩潰,我在我的應用程序中,因爲NSLog沒有立即寫入控制檯我想知道是否有方法從我的代碼同步寫入控制檯。同步寫入控制檯

因此,例如printf這裏是一個更好的選擇,否則我將不得不處理相同的問題。

+1

'printf'也被緩衝了,所以至少你應該在調用'printf'後立即'fflush(stdout)'。 – dasblinkenlight 2012-07-28 10:56:47

+0

那麼NSLog打印出它的消息給stderr,它沒有被緩衝(你可以用fprintf(stderr,...)來實現)。所以我認爲對於控制檯輸出來說這是最好的選擇。 – 2012-07-28 11:00:06

回答

3

你可以在崩潰的行之前添加一個斷點,但我認爲默認情況下Xcode已經掛起了這個進程,這樣你仍然可以訪問調試器控制檯...如果沒有,你可能想要添加通過將產品的一些附加診斷 - >編輯方案。(在上一級菜單),如邊後衛,殭屍對象等

此外,還可以從主線程中調用NSLog

[self performSelectorOnMainThread:@selector(log:) withObject:@"String .." waitUntilDone:YES]; 

- (void)log:(NSString *)message { 
    NSLog(message); 
}