調試鴻蒙(HarmonyOS)App源代碼的兩種方式

爲了讓更多的人看到本文,請各位讀者動動小手,點擊右上角【...】,將本文分享到朋友圈,thanks! 

調試是開發App的必備技能,畢竟任何一個比較複雜的App都不可能一次編碼成功,若是App的預期與本身指望的不一樣,或因爲某些緣由異常中斷,就須要查中斷的緣由,這些都須要調試程序。
調試程序有多種方法,比較經常使用的有設置斷點和輸出日誌兩種方式,本文將詳細介紹這兩種調試App的方式。
1. 設置斷點
若是認爲須要跟蹤的代碼或bug在某行代碼的附近,能夠單擊該行代碼前面的部分爲該行設置斷點,這時會在這行代碼前面出現一個紅點,如圖1所示。

圖1  設置斷點
而後點擊上方工具欄中如圖2所示的調試運行按鈕。

圖2 調試運行按鈕
若是未遇到斷點,點擊該按鈕會正常運行程序,一旦遇到斷點,程序執行就會在斷點處中止執行。知道按F7F8鍵才繼續一行一行執行程序,以便監控程序中的相關變量的狀態。F7表示Step IntoF8表示Step Over。其中Step Into表示會跟蹤到方法內部,例如,當前正在執行一個方法,按F7鍵會繼續跟蹤到方法內部,而後繼續一行一行代碼執行。Step Over會將方法當作一行代碼執行,不會跟蹤到方法內部。因此若是認爲某一個方法確定沒有問題,就按F8,若是認爲該方法可能會有一些問題,就按F7
調試過程的效果如圖3所示。咱們能夠看到,在下方的Variables視圖中會顯示相關變量的當前值。

圖3 調試代碼

2. 輸出日誌
另一種調試代碼的方式就是輸出日誌,能夠直接使用System.out.println(...)的方式將信息輸出到LogCat視圖中,例如,執行下面的代碼,會在LogCat視圖中看到如圖4所示的信息。
System.out.println("hello world"); 

圖4在LogCat視圖中輸出的調試信息
HarmonyOS還提供了另一種輸出日誌的方式,這就是HiLog類,該類提供了多個靜態方法,用於輸出不一樣級別的日誌信息。這些靜態方法如表1所示。
1 HiLog類中用於輸出日誌信息的方法
方法名
功能
debug
用於輸出調試日誌信息
info
用於輸出普通的日誌信息
warn
用於輸出警告日誌信息
error
用於輸出普通錯誤日誌信息
fatal
用於輸出致命錯誤日誌信息
5個方法的參數徹底相同,例如,error方法的原型以下:
public static int error(HiLogLabel label, String format, Object... args);
其中label參數表示輸出日誌的相關信息,類型是HiLogLabel對象,format表示要輸出的日誌文本(能夠包括格式化佔位符),args參數表示格式化的參數值,是可選的參數。
使用輸出日誌方法的案例以下:
HiLogLabel label = new HiLogLabel(HiLog.LOG_APP ,223, "MY_TAG");HiLog.error(label, "這是一行錯誤信息,緣由:%{private}s","Url不可訪問");HiLog.warn(label,"這是一個警告,緣由是:%{public}s", "變量的值多是負數"); 
其中HiLogLabel構造方法的第1個參數表示日誌類型,目前只能是HiLog.LOG_APP,後續會開放更多的日誌類型。第2個參數是domain,就是一個整數類型,第3個參數是日誌的標籤。Domain和日誌標籤都會以某種形式顯示在日誌信息上。
在輸出日誌信息時,運行格式化日誌信息,也就是爲日誌信息指定佔位符。佔位符須要在%和符號(如sd)之間加{private}{public},若是加{private},輸出的信息就是<private>,也就是說會隱藏佔位符對應的信息,若是加{public},則輸出原始的佔位符信息。Domain在輸出時被轉換爲十六進制數放到標籤的前面,中間用斜槓(/)分隔。
執行這段代碼,會在HiLog視圖中輸出如圖5所示的日誌信息。

圖5 在HiLog視圖輸出日誌信息
使用error方法會輸出深紅色的日誌信息,日誌的內容與其餘方法輸出的日誌內容相同。不過要注意,使用HiLog的相關方法輸出的日誌分爲5個級別,分別是DEBUG(調試)、INFO(信息)、WARN(警告)、ERROR(錯誤)、FATAL(致命錯誤)。這5個級別分別用5個整數表示,這些整數都在HiLog類中定義,代碼以下:
public final class HiLog { public static final int DEBUG = 3; public static final int INFO = 4; public static final int WARN = 5; public static final int ERROR = 6; public static final int FATAL = 7; … …
若是要在HiLog視圖中過濾這些級別的信息。只有不大於當前級別的信息纔會給顯示。例如,要過濾WARN信息,只有DEBUGINFOWARN3類信息纔會被顯示,因爲ERRORFATAL的值逗比WARN大,因此這兩類信息不會被顯示。

- EOF -java


推薦閱讀   點擊標題可跳轉

1. 開發跨設備的鴻蒙(HarmonyOS) Appweb

2.鴻蒙(HarmonyOS)大神都喜歡玩命令行微信

3.像極客同樣提取Android的Root權限app

4.牛掰了!鴻蒙與Android完美融合,將鴻蒙設備當Android設備用
dom

5.【鴻蒙學院】鴻蒙App開發直播學員提問與回答工具

6. 使出Python的六脈神劍,讓Python擁有無限擴展性ui



關注「極客起源」公衆號,加星標,不錯過精彩技術乾貨
編碼






本文分享自微信公衆號 - 極客起源(geekculture)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。spa

相關文章
相關標籤/搜索