這個教程說明在Basic4android v1.50 后加入的新的調試功能及其他相關的工具.
在Project菜單下有一個叫Attach Debugger的新選項.
如果這個選項是選上的話,那么編譯的的代碼就會包含調試代碼.
調試代碼允許IDE 與程序建立連接並檢查它的運行.
當程序運行時,首先會等10秒鍾與IDE 建立連接. 通常IDE 會很快連接上的. 然而當你手工從電話上運行這個程序時,就會看到這個等待.
編譯的APK文件會以 _DEBUG.apk后綴保存.由於這個文件包含調試信息,因此一般不應該分發這個apk文件,其在實際運 行中會造成巨大的拖延.
這個菜單下的另外的一個選項是Include Debug Information.這個選項當Attach Debugger option被選上的話不會有任何效果.
當Attach Debugger沒有被選上的話(這意味着調試代碼沒有被加入)這個選項決定原始的 B4A 代碼是否被加到編譯的APK文件中. 增加B4A代碼有特殊的用處.當出錯時,錯誤信息會包含原始的B4A 代碼行,而不僅僅是Java行.
(譯者注: b4a 首先把basci 語法轉換成Java 代碼,然后編譯的)
當我們把Attach Debugger選上然后運行程序時,IDE 將屏幕的下方打開一個調試模塊:
調試模塊包含三部分: subs stack, global variables and local variables.當程序暫停時這些部分顯示相應的數據.你也可以把鼠標放到一個變量名上來查看它的值.
在 subs stack 部分上面有四個按鈕,分別對應繼續執行,執行到下一行,暫停執行和停止程序.后面還有一個圖標告訴我們調試 器是否連接上.雙擊這個圖標可以不用關閉程序就斷開調試器.
同時還有一個Debug菜單,里面包括了Step Over (執行下一行並在內部的子程序調用時不中斷) 和 Step Out (運行完當前子程后中斷) 項.
當調試模塊出現時,代碼編輯器會保持只讀.
斷點 - 你可以把代碼里面的一行作為斷點.通過點擊代碼左面灰色區域來設置一個斷點.
當程序運行到斷點時會暫停,這時你就可以查看當前的運行狀態了.
日志 - 右邊面板上的Logs頁面是非常有用的. 它顯示元件生存循環中的相關信息, 它也可以顯示使用Log 關鍵字輸出的信息. 你可以通過按Connect按鈕來連接設備的日志.請注意,有一個Filter 的勾選框.當選上時,你只看到與你程序相關的信息.
當沒有被選上的時候,你會看到運行系統上的所有信息.當你碰到一個錯誤卻在日志里面沒有看見任何相關信息時 ,可以試着去掉filter 選中來查找一下錯誤信息.
由於這個日志是設備來維護的,因此當你連接上一個設備時,你也會看到以前的信息.
關於調試器的注意事項:
- 在下面子程中的斷點會被忽略: Globals, Process_Globals and Activity_Pause.
- 服務 - 調用StartService 后面出現的斷點會被忽略. 在 Service_Create 和 Service_Start里設置的斷點會暫停程序一段時間(大約 12 秒).這是防止OS 殺掉這個服務.
- 當程序暫停時,觸發的事件將被執行.在事件中的斷點會被忽略(僅僅發生在程序已經被暫停).
- 從設備傳送到IDE 的數據有大小限制. 太長的字符串會被截斷.