官术网_书友最值得收藏!

1.4.7 應用程序的斷點調試

在應用開發過程中,難免會遇到各種各樣的程序問題,經常需要使用Debug工具來對程序進行調試。在DevEco Studio中,包含了程序的調試能力,使用遠程模擬器可以進行多語言和跨語言的調試,同時還支持分布式應用的跨設備調試。

斷點調試就是在程序的某一處設置一個斷點,當程序運行到此處時會暫時停止,此時,可以通過DevEco Studio提供的工具來對這一時刻的內存變量值和狀態進行分析,從而對程序的運行情況進行判斷。打斷點的方式是在要中斷的程序行的行號后點擊鼠標左鍵,如果出現紅色圓形標志,就意味著斷點已經設置成功,此時整行代碼也被標記為紅色背景。程序斷點如圖1-98所示。

圖1-98 程序斷點

有兩種方式可以使斷點生效。第一種方式為使用調試模式運行程序。在DevEco Studio窗體的右上角有一個“”按鈕,它的作用是將應用部署到設備上,并調試程序,如圖1-99所示。

圖1-99 Debug模式啟動

點擊“”按鈕,程序便會部署到設備上運行。與直接運行程序不同,用調試模式運行程序后,應用會彈出如圖 1-100 所示的窗口,此窗口稍后會自動消失。

稍做等待,程序運行到打斷點的地方后,會停止運行,斷點由“”變為“”。斷點前面的程序的變量值和變量狀態可以顯式地觀察到,如圖1-101所示。

圖1-100 設備提示進入Debug模式

圖1-101 程序進入斷點

在DevEco Studio窗體下方會彈出Debug控制臺,如圖1-102所示,先來看控制臺左側圖標的含義。

圖1-102 Debug控制臺

Resume Program(F9):恢復程序,讓程序繼續運行。

Pause Program:暫停程序。

Stop'entry'Ctrl+F2:停止程序。

View Breakpoints(Ctrl+Shift+F8):查看所有程序斷點。

Mute Breakpoints:使斷點失效。

Get Thread Dump:獲取線程堆棧信息。

Settings:Debug設置選項。

Pin Tab:固定Tab頁簽。

在Debug控制臺中,還提供了打斷點方式運行程序,提供了單步調試、多步調試等功能,控制臺中按鈕的功能如下:

Show Execution Point(Alt+F10):顯示程序斷點的位置。

Step Over(F8):單步執行,當遇到子函數時不會進入子函數內,把子函數整體作為單步調試程序時的一步來運行。

Step Into(F7):單步執行,當遇到子函數時進入子函數內,繼續單步執行。

Force Step Into(Alt+Shift+F7):單步執行,在調試的時候能進入任何方法。

Step Out(Shift+F8):跳出當前方法。

Drop Frame:回退應用程序的執行,以達到先前的狀態。

Run to Cursor(Alt+F9):執行到光標所在的代碼行。

Evaluate Expression(Alt+F8):動態執行代碼工具。

Trace Current Stream Chain:流式編程調試插件。

在程序運行到斷點停止后,在 Debug 控制臺的 Variables 窗口中可以看到當前程序的變量值和變量狀態。比如,如圖1-103所示,當程序運行到斷點時,有intent和this兩個變量可以查看,變量內包含的信息也可以通過層級展開。intent變量的parameters的值為null,說明intent變量中沒有包含其他參數。

圖1-103 調試模式下的變量查看

在代碼窗口中,將光標指向已經運行過的程序中的變量,也可以看到變量值,我們可以通過排查這些變量值是否和預期的相同來判斷程序是否執行正確,如圖1-104所示。

第二種方式為通過“”按鈕運行程序,然后通過“”按鈕來調試已經運行的程序。

首先,將程序運行起來,再點擊“”按鈕,在彈出的對話框中選擇要調試的程序。這時,可以選擇要調試的語言,進行多語言調試配置。最后,點擊“OK”按鈕,便可以對程序進行斷點調試了,如圖1-105所示。這種方式使開發者不必再重新部署應用,可以在已運行的應用上,直接進行調試。

圖1-104 在代碼窗口中查看變量值

圖1-105 將調試器附加到進程

值得注意的是,如果調試的是Feature模塊,那么需要檢查Feature模塊下的config.json文件的abilities數組是否存在visible屬性。如果不存在,那么手動添加 visible 屬性且取值為 true,表示該模塊可以被其他的應用調用;否則Feature模塊的調試無法進入斷點。如果不希望該模塊被其他應用調用,那么需要在調試完成后刪除visible屬性。Entry模塊的調試則不需要做該檢查。

主站蜘蛛池模板: 鄯善县| 枞阳县| 洪泽县| 襄樊市| 白银市| 牡丹江市| 确山县| 鄂州市| 佛冈县| 定州市| 金湖县| 故城县| 汤阴县| 电白县| 天柱县| 宕昌县| 乌海市| 墨竹工卡县| 沁水县| 四平市| 古田县| 湖口县| 临夏市| 栾川县| 鄂托克前旗| 赤水市| 武平县| 耿马| 如皋市| 涿州市| 临朐县| 大庆市| 梁河县| 泉州市| 彰化市| 称多县| 平远县| 会泽县| 利川市| 昌平区| 沂源县|