Objective-C列印除錯資訊
Objective-C除錯之列印呼叫方法或程式碼所在的行號
很多開發者會有這樣的疑問,在iOS開發或者MacOS開發中, 如何將上下文資訊(例如當前呼叫方法或程式碼所在的行號)新增到我的列印語句中?本文小試牛刀,提供相關的資訊。
我們知道,C前處理器提供了許多標準巨集,可以提供有關當前檔案、行號或函式的資訊。另外,Objective-C有_cmd
隱式引數,它給出了當前方法的選擇器,以及將選擇器和類轉換為字串的函式。因此我們可以在NSLog語句中使用這些方法來在除錯或錯誤處理期間提供有用的上下文。
示例1:記錄當前方法和行號的示例。將其貼上到您的專案中,然後檢視它列印的內容!
NSMutableArray *someObject = [NSMutableArray array];
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);
[someObject addObject:@"foo"];
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);
下表列出了最常用的巨集和表示式,這些巨集和表示式在日誌記錄語句中可能很有用。
表1:預定義的巨集和C/C++/Objective-C除錯函式
巨集 | 格式說明符 | 描述 |
---|---|---|
__func__ | %s | 當前函式簽名。 |
__LINE__ | %d | 在原始碼中的所在行號 |
__FILE__ | %s | 所在原始碼檔案的全路徑 |
__PRETTY_FUNCTION__ | %s | 類似__func__,但包含c++程式碼中的詳細型別資訊 |
表2:OBjective-C中的除錯函式
函式名 | 格式說明符 | 描述 |
---|---|---|
NSStringFromSelector(_cmd) | %@ | 當前選擇器的名字 |
NSStringFromClass([self class]) | %@ | 當前物件所在的類名 |
[[NSString stringWithUTF8String:__FILE__] lastPathComponent] | %@ | 原始碼的檔名 |
[NSThread callStackSymbols] | %@ | 用於跟蹤當前堆疊的程式設計師可讀字串構成的NSArray。僅用於除錯,不要將其呈現給終端使用者或用於在程式中執行任何邏輯 |
相關文章
- firewalld: 列印除錯資訊除錯
- 0176-列印錯誤提示資訊
- Android 用adb 列印linux核心除錯資訊dmesg和kmsg命令AndroidLinux除錯
- 定製NSLog便於列印除錯除錯
- 偵錯程式工作原理(三):除錯資訊除錯
- 偵錯程式工作原理(3):除錯資訊除錯
- 除錯的第一個Jdon出錯資訊除錯
- VS2012編譯除錯WDM驅動(KdPrint無除錯資訊 debugview win7無除錯資訊)編譯除錯ViewWin7
- 【recovery】android使用串列埠列印recovery除錯日誌Android串列埠除錯
- Nodejs 進階:用 debug 模組列印除錯日誌NodeJS除錯
- 如何在Objective-C中列印日誌記錄Object
- J-LINK RTT列印除錯,釋放串列埠資源除錯串列埠
- 除錯篇——除錯物件與除錯事件除錯物件事件
- Objective-C:錯誤處理Object
- 去掉pipeline中shell命令的除錯資訊除錯
- 請問在websphere如何能看到除錯資訊?Web除錯
- 請問在jb9中可以除錯ejb嗎?我指的是單步除錯,不是採用列印輸出的辦法除錯
- 嵌入式:本機檢視串列埠除錯資訊串列埠除錯
- win10系統如何設定寫入除錯資訊 win10系統設定系統寫入除錯資訊的步驟Win10除錯
- excel中的列印線如何刪除Excel
- Debug模式應用程式輸出Debug除錯資訊模式除錯
- C++簡單日誌/debug除錯資訊輸出C++除錯
- Windows windbg kernel debug 雙機核心除錯 - USB3.0 除錯 USB除錯 除錯線Windows除錯
- 22 真機除錯bug(除錯包)除錯
- gdb除錯命令小結_與多檔案除錯_遠端除錯除錯
- Win10系統下IIS開啟ASP程式錯誤資訊除錯的方法Win10除錯
- WCF除錯異常資訊:ServiceHost 僅支援類服務型別除錯型別
- nginx 錯誤除錯Nginx除錯
- rac錯誤除錯除錯
- 印表機錯誤無法列印怎麼處理 印表機錯誤不能列印的方法
- Python 程式碼除錯—使用 pdb 除錯Python除錯
- Mobile Web 除錯指南(2):遠端除錯Web除錯
- 前端除錯前端除錯
- gdb除錯除錯
- postman除錯Postman除錯
- LLDB除錯LLDB除錯
- 除錯PURGEOLDEXTRACTS除錯
- cordova除錯除錯