當我的應用程序崩潰,我想保存用於調試最新的控制檯(尤其是讀取系統信息,如無法識別的選擇)從iPhone應用程序訪問控制檯數據
是否有可能以編程方式訪問控制檯?
UPDATE:
我已經找到了答案,在單證:使用STDERR_FILENO。 「
」將錯誤消息記錄到Apple系統日誌工具(請參閱man 3 asl)。如果STDERR_FILENO文件描述符已被重定向遠離默認值或正在轉到tty,那麼它也會寫入到那裏。
當我的應用程序崩潰,我想保存用於調試最新的控制檯(尤其是讀取系統信息,如無法識別的選擇)從iPhone應用程序訪問控制檯數據
是否有可能以編程方式訪問控制檯?
UPDATE:
我已經找到了答案,在單證:使用STDERR_FILENO。 「
」將錯誤消息記錄到Apple系統日誌工具(請參閱man 3 asl)。如果STDERR_FILENO文件描述符已被重定向遠離默認值或正在轉到tty,那麼它也會寫入到那裏。
這聽起來像你想改變標準輸出流的目的地。我從來沒有在iOS上嘗試過,但我希望能夠使用freopen()
來做到這一點。這裏是a SO question that may help。
您還需要在應用程序中構建一些調試功能,以便恢復輸出。例如,您可以將其發佈到Web服務器,或者通過電子郵件將它發送給您。
當您的應用程序在設備中崩潰時,會保存一個崩潰日誌。當你插入你的設備時,啓動XCode,打開「Organizer」窗口並點擊設備。然後在左側尋找您的設備,然後點擊「崩潰日誌」。與構建時生成的.dSYM文件中的信息一起,您可以經常恢復應用崩潰的方式和位置。如果您真的只想在崩潰時將信息保存在XCode的控制檯窗口中,只需在控制檯窗口內單擊,點擊Cmd-A(全選)和Cmd-C(複製),然後粘貼到文本編輯器窗口中。
我有我的應用程序crashlog,但我也想要訪問控制檯,因爲它有時包含與崩潰相關的有用信息。 –
它不適用於默認的NSLog消息。它確實創建了文件,但它是空的,所有消息仍顯示在控制檯中。我猜NSLog是使用不同的方法:( –
其實,你是對的:)。我正在重定向標準輸出。當我嘗試重定向stderr時 - 它可以工作。 謝謝! –
@Gilad你在代碼中用freopen發佈到AppStore嗎?評論有沒有問題?我想將我的應用的所有輸出重定向到/ dev/null。恐怕蘋果可以拒絕我的應用程序用於此類用途。請看看http://stackoverflow.com/questions/32780617/ios-suppress-output-with-freopen-will-it-pass-apple-review – Petr