HBLogDebug 輸出訊息
 
    
    前言
上一篇 透過 SSH 安裝越獄套件 中,已讓 iOS 設備將在 Respring 後彈出一個警告窗框。
雖然警告窗框可以輸出自訂訊息,但若所有訊息都使用警告窗框輸出的話,既花時間也不務實。
接下來,將透過HBLogDebug()向系統日誌輸出 Log 訊息,提高除錯效率。
實作過程
Tweak.xm
於欲輸出訊息處使用HBLogDebug()即可:
%hook SpringBoard //指定要 hook 的類別,需要以 %end 結尾
- (void)applicationDidFinishLaunching:(id)arg1 //指定要 hook 的函式
{
  %orig; //呼叫原始函式
  UIAlertView * alert =
  [[UIAlertView alloc] initWithTitle:@"Hello"
                             message:@"It is my first tweak."
                            delegate:self
                   cancelButtonTitle:@"OK"
                   otherButtonTitles:nil];
  [alert show];
  // [alert release];
  // ARC 預設開啟,不用手動 release
  HBLogDebug(@"Hello");
  HBLogDebug(@"It is my first tweak.");
  HBLogDebug(@"arg1:%@",arg1); // 輸出變量 arg1
}
%end
查看日誌輸出
- 
將 iOS 設備透過傳輸線連上電腦,開啟 macOS 內建的 系統監視程式.app。
- 
於左方 裝置面板選中 iOS 設備。
- 
於右上搜尋 Tweak 名稱(本例為: hello)或Tweak或 關鍵字。
- 
將顯示以下輸出: 
[1;36m[hello] [m[0;36mTweak.xm:16[m [0;30;46mDEBUG:[m Hello
[1;36m[hello] [m[0;36mTweak.xm:17[m [0;30;46mDEBUG:[m It is my first tweak.
[1;36m[hello] [m[0;36mTweak.xm:18[m [0;30;46mDEBUG:[m arg1:<SpringBoard: 0x106011000>
修正彩色輸出
上述輸出中才會穿插出現不必要的字符,是因為HBLogDebug()預設採用色彩輸出訊息。
但是系統監視程式.app並不支援顯示顏色,若要改為無色彩輸出只需要於Tweak.xm開頭加上:
// 移除 HBLogDebug() 顏色
#undef HB_LOG_FORMAT
#define HB_LOG_FORMAT(color) CFSTR("[%s: %s:%d] %s: %@")
          貼文底端