iOS除錯小技巧,在殺死程式怎麼檢視NSLog資訊

Cocoma發表於2018-09-12

最新在寫推送時,點選獲取推送傳遞的擴充套件欄位,在程式啟用狀態下,可以通過xcode控制檯檢視NSLog資訊,但是在程式退出狀態下,想獲取推送通知傳遞的欄位,這時就是頭疼的問題。

【1】真機除錯

在程式殺死時,失去xcode連結,沒有辦法獲取列印資訊,這時可以在 AppDelegate中 的宣告如下方法,用來把NSLog的資訊列印到手機磁碟檔案中

- (void)redirectNSlogToDocumentFolder
{
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
    NSString *documentDirectory = [paths objectAtIndex:0];
    
    NSString *fileName = [NSString stringWithFormat:@"dr.txt"];// 注意不是NSData!
    
    NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];
    
    // 先刪除已經存在的檔案
    
    NSFileManager *defaultManager = [NSFileManager defaultManager];
    
    [defaultManager removeItemAtPath:logFilePath error:nil];
    
    // 將log輸入到檔案
    
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
    
    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
    
}
複製程式碼

didFinishLaunchingWithOptions方法中呼叫上面方法,同時在Info.plist檔案中新增一行UIFileSharingEnabled設定為YES,允許app同坐iTunes連結時,設定改app問共享性,這時就能獲取到該app所在磁碟資料夾的檔案,點選儲存,到Mac桌面雙擊即可檢視(示例中儲存的txt格式檔案),這時就能檢視,程式的NSLog資訊和xcode控制檯列印的一樣。

【2】模擬器除錯

方法如果真機除錯一樣,宣告方法,然後呼叫,在連結xcode時列印paths路徑,複製,然後在Mac中右鍵Finder->前往資料夾,貼上路徑,這時就可以找到日誌檔案。

相關文章