天天看點

ios 列印 詳細錯誤日志_iOS中列印系統詳細日志

Q:如何列印目前的函數和行号?

A:我們可以在列印時使用一些預編譯宏作為列印參數,來列印目前的函數和行号。如:

1

NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj);

其中__func__和__LINE__都是預編譯的宏,編譯時會分别替換為目前函數和目前行号。

下面是一些常用于列印日志的宏。

宏 說明

__func__ 列印目前函數或方法,c字元串

__LINE__ 列印目前行号,整數

__FILE__ 列印目前檔案路徑,c字元串

__PRETTY_FUNCTION__ 列印目前函數或方法(在C++中會包含參數類型),c字元串

Q:如何列印一個類名,消息名,目前堆棧資訊?

A:你可以使用以下方法在運作時動态擷取這些資訊。

代碼 說明

NSStringFromSelector(SEL) 擷取selector的名字

NSStringFromSelector(_cmd) 擷取目前方法名

NSStringFromClass([object class])擷取object的類名

NSStringFromClass([AppDelegate class]));

NSThread callStackSymbols] 擷取目前線程的棧,是一個NSArry,包含堆棧中所有函數名。

Q:如何将日志列印到一個檔案

A:可以使用freopen函數重定向标準輸出和标準出錯檔案。因為printf函數會向标準輸出(stdout)列印,而NSLog函數會向标準出錯(stderr)列印。重新定向标準輸出(stdout)和标準出錯(stderr)到一個檔案将會使他們列印日志到一個檔案中。

1

2

freopen("/tmp/log.txt", "a+", stdout);

freopen("/tmp/log.txt", "a+", stderr);

#define NSLog(FORMAT, ...) {\

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];\

[dateFormatter setDateStyle:NSDateFormatterMediumStyle];\

[dateFormatter setTimeStyle:NSDateFormatterShortStyle];\

[dateFormatter setDateFormat:@"HH:mm:ss:SSSSSS"]; \

NSString *str = [dateFormatter stringFromDate:[NSDate date]];\

[dateFormatter release];\

fprintf(stderr,"[--%s--]*[--%s--]*[--%s:%d--]\n",[str UTF8String], [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String],[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__);\

}

如何在golang中列印grpc詳細日志

最近搗鼓fabric,在一個tls證書問題上糾結挺久,連接配接orderer服務時候,grpc日志總是冷冰冰的顯示這個資訊 Orderer Client Status Code: (2) CONNECTI ...

iOS 中捕獲程式崩潰日志

iOS 中捕獲程式崩潰日志 (2014-04-22 17:35:59) 轉載▼     iOS開發中遇到程式崩潰是很正常的事情,如何在程式崩潰時捕獲到異常資訊并通知開發者,是大多數軟體都選擇的方法.下 ...

IOS中調用系統的電話、短信、郵件、浏覽功能

iOS開發系列--通訊錄.藍牙.内購.GameCenter.iCloud.Passbook系統服務開發彙總 2015-01-13 09:16 by KenshinCui, 26990 閱讀, 35 評 ...

Linux中的系統預設日志

/var/log/cron 記錄了系統定時任務相關的日志 /var/log/cups 記錄了列印資訊的日志 /var/log/dmesg 記錄了系統在開機時核心自檢的資訊,可以通過dmesg指令直接查 ...

iOS 中捕獲程式崩潰日志 (2014-04-22 17:35:59)

http://blog.sina.com.cn/s/blog_b71d24920101ky2d.html iOS開發中遇到程式崩潰是很正常的事情,如何在程式崩潰時捕獲到異常資訊并通知開發者,是大多數軟 ...

IOS中UIScrollView的詳細使用

UIScrollView 是可以滾動的View 要想讓UIScrollView可以滾動,必須設定UIScrollView的contentSize contentSize : 表示UIScrollVie ...

IOS 中得runloop 詳細解釋

1.Runloop基礎知識- 1.1 字面意思 a 運作循環 b 跑圈 - 1.2 基本作用(作用重大) a 保持程式的持續運作(ios程式為什麼能一直活着不會死) b 處理app中的各種事件(比如觸 ...

iOS中擷取系統相冊中的圖檔

一.擷取單張圖檔 思路: 1.利用UIImagePickerController可以從系統自帶的App(照片\相機)中獲得圖檔 2.設定代理,遵守代理協定 注意這個UIImagePickerContr ...

關于ios中得路徑詳細講解

利用create groups for any added folders 這樣的方式表示的是将所有的資源都放在資源包得路徑下,沒有層次的概念利用create folder references fo ...

随機推薦

Pyhton 利用threading遠端下發檔案和遠端執行linux系統指令

#!/usr/bin/env python # encoding: utf-8 #__author__ = 'cp' #__date__ = '21/07/16 上午 10:32' import th ...

LLVM 筆記(二)—— PHI node

ilocker:關注 Android 安全(新手) QQ: 2597294287 什麼是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,靜 ...

如何為程式設計愛好者設計一款好玩的智能硬體(三)——該選什麼樣的MCU呢?

一.我的構想:如何為程式設計愛好者設計一款好玩的智能硬體(一)——即插即用.積木化.功能重組的智能硬體子產品構想 二.别人家的孩子:如何為程式設計愛好者設計一款好玩的智能硬體(二)——别人是如何設計硬體積木的! ...

HDU 1018 Big Number (數學題)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1018 解題報告:輸入一個n,求n!有多少位. 首先任意一個數 x 的位數 = (int)log10(x ...

Hive中典型的表内資料除重寫法

insert overwrite table store select t.p_key,t.sort_word from ( select p_key, sort_word , row_number( ...

DWZ前端架構使用問題記錄

心得體驗:DWZ依賴特定的HTML結構,是以一定要注意項目中的HTML結構,多用firebug檢視,還有如果使用一些元件的時候出現問題,可以檢視下傳回JSON格式是否符合元件規定的JSON格式,很多都 ...

[九度OJ]1113.二叉樹(求完全二叉樹任意結點所在子樹的結點數)

原題連結:http://ac.jobdu.com/problem.php?pid=1113 題目描述: 如上所示,由正整數1,2,3……組成了一顆特殊二叉樹.我們已知這個二叉樹的最後一個結點是n.現在 ...

Microsoft Azure自動化測試

在使用與微軟Azure進行互動的工具并試圖衡量性能時,基本上不可能得到任何類似于公平.一緻的測試.在午餐時間執行的測試運作會得的一套計時與晚上每個人都離開辦公室執行的測試所到的結果可能完全不同.結果取 ...

SQL中N $ # @的作用

declare @sql nvarchar(4000) set @sql= N'select @TotalRecords=count(*) from ' + N'(' + @sqlFullPopula ...

linux建立檔案樹,孩子兄弟樹(或廣義表),建立檔案樹及其訪問

假設在Linux下要訪問一個目錄. 我們須要知道一下系統調用. 1.opendir(path); //注意path是絕對路徑 2.ptr=readdir(dir);//dir 為opendir();正 ...