Android系統開發(2)——GDB調試工具
調試的過程
我們在eclipse中來看一下一般調試的過程:
1、debug模式編譯
2、打上斷點
3、運行調試
4、單步調試
step into:跳到函數體內部
step over:不跳到函數體內
step return:運行完當前函數
5、繼續運行
continue
6、列印和監控值<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD48aDM+R0RCtffK1DwvaDM+PHA+z8jQtNK7ts5Do6ujq7XEtPrC66OstPrC68TayN3I58/Co7o8L3A+PHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140822/2014082208383353.png" alt="\" />
使用debug模式編譯:
進入Debug偵錯模式:
1、打斷點,打斷點的方式如下(GDB中的命令可以使用首字母來替代,比如break和b的作用相同)
break 函數名
break 行號
break 檔案名稱:行號
break 行號 if條件
通過info break可以查看斷點,通過delete可以刪除斷點,下面我們使用list命令查看源檔案,然後打斷點
查看斷點
可以看到目前有一個斷點,他的編號為1,在第四行;下面使用方法名打一個斷點
2、開始運行(run) ,可以使用continue來繼續向下運行,使用quit退出運行狀態
可以看到在啟動並執行時候停到了斷點處
3、單步調試,但步調試分別對應如下三個命令
next------step over
step-----step into
finish-----step return
下面我們再來調試一段程式碼,代碼內容和輸出結果如下:
輸出結果為:
這段代碼在沒有輸出結果之前有些朋友可能會認為正確結果應該是50.5,下面我們就通過調試來看一下哪裡出了問題
可以看到我們在第五行打了一個斷點,當執行到第五行的時候其實該行並未執行,所以此時i的值是一個無效的值。
在上面我們使用了watch來觀察變數i當i發生改變後就會顯示i改變後的值,可以看到我們next後變數i的值變為0.01,下面我們使用條件斷點來調試
可以看到在i迴圈到98次的時候實際的值並不是0.98而是比0.98大,我們next到第100次迴圈可以看到
此時條件不滿足i==1,所以只能執行99次迴圈,結果就是49.5而不是50.5
輸入wi可以方便我們調試