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: 列印除錯資訊除錯
- Android 用adb 列印linux核心除錯資訊dmesg和kmsg命令AndroidLinux除錯
- 0176-列印錯誤提示資訊
- J-LINK RTT列印除錯,釋放串列埠資源除錯串列埠
- 去掉pipeline中shell命令的除錯資訊除錯
- python 用traceback列印錯誤訊息(轉)Python
- Jenkins Tips:去掉pipeline中shell命令的除錯資訊Jenkins除錯
- 除錯篇——除錯物件與除錯事件除錯物件事件
- C++簡單日誌/debug除錯資訊輸出C++除錯
- win10系統如何設定寫入除錯資訊 win10系統設定系統寫入除錯資訊的步驟Win10除錯
- Windows windbg kernel debug 雙機核心除錯 - USB3.0 除錯 USB除錯 除錯線Windows除錯
- ajax編輯資訊和刪除資訊
- 除錯JS獲得動態視訊地址除錯JS
- SAP錯誤訊息除錯之七種武器:讓所有的錯誤訊息都能被定位除錯
- iOS除錯小技巧,在殺死程式怎麼檢視NSLog資訊iOS除錯
- 將程式碼中的除錯資訊輸出到日誌檔案中除錯
- Python 程式碼除錯—使用 pdb 除錯Python除錯
- IsDebuggerPresent的反除錯與反反除錯除錯
- Objective-C中的訊息轉發Object
- nginx 錯誤除錯Nginx除錯
- 記一次https通訊除錯過程HTTP除錯
- 樹莓派已經通過網路連線通過串列埠通訊在串列埠除錯小助手列印與操作樹莓派串列埠除錯
- JavaScript錯誤資訊JavaScript
- 前端除錯前端除錯
- python 除錯Python除錯
- LLDB除錯LLDB除錯
- postman除錯Postman除錯
- Linux除錯Linux除錯
- 除錯toybox除錯
- gdb除錯除錯
- Spring Boot 2.x(十一):AOP列印介面資訊Spring Boot
- 使用動態輸出列印核心的DEBUG資訊
- JVM異常不列印堆疊資訊 [ -XX:-OmitStackTraceInFastThrow ]JVMMITAST
- 記一次使用 Windows 除錯套件 gflags 解決 CefSharp 載入報錯資訊模糊的問題Windows除錯套件
- 印表機錯誤無法列印怎麼處理 印表機錯誤不能列印的方法
- 反除錯&反反除錯 -- 利用sysctl檢測偵錯程式是否存在除錯
- 【除錯】SystemTap除錯網路卡狀態一例除錯
- .NET高階除錯系列-Windbg除錯入門篇高階除錯