本節書摘來自華章計算機《資料科學:r語言實作》一書中的第1章,第1.11節,作者 丘祐玮(david chiu),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
作為一個程式員,調試是日常最常見的任務。最簡單的調試方法是在期望的位置插入一條列印語句;然而,這種方法很低效。這裡,我們會展示如何使用一些r調試工具來加速調試過程。
確定你已經在作業系統中安裝了r語言,完成了之前的步驟。
執行下列步驟,來調試r函數。
1.首先,我們建立函數debugfunc,其帶有參數x和y,但是我們隻傳回x:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2QmZyUmYzcDZ4MDM0ETN3YmM3UTO5EDMlBTMiFGZ0QzMkdzYlZmM48CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
2.然後我們隻把2傳遞給dubugfunc:
3.接着,我們對函數debugfunc應用函數debug:
4.現在,我們再把2傳遞給dubugfunc:
5.你可以鍵入help來檢視所有的指令:
6.然後,你可以鍵入n來進入下一個調試步驟:
7.現在你可以使用objects或者ls列出所有的變量:
8.在每一步中,你都可以鍵入變量名來擷取目前的值:
9.在最後一步中,你可以通過鍵入指令q來跳出調試模式:
10.你可以使用函數undebug離開調試模式:
11.接下來,讓我們使用函數browser來調試:
12.調試函數會直接進入函數browser所在的位置:
13.為了恢複調試過程,可以在浏覽過程中鍵入recover:
14.另外,你可以使用函數trace給步驟4中的函數debug插入代碼:
15.你可以從步驟4跟蹤調試過程,并判定插入的代碼:
你也可以使用函數trace來跟蹤某個函數的使用:
你還可以使用函數traceback來列印函數的調用堆棧:
由于所有的代碼都無法避免缺陷,是以r程式員同樣需要準備好優秀的調試工具,做好調試的準備。在本教程中,我們展示了如何使用函數debug、browser、trace和traceback來調試函數。
在第1部分中,我們講解了如何使用debug對已有函數進行調試。我們首先建立了一個名為debugfunc的函數,其帶有兩個輸入參數:x和y。然後,我們對函數debugfunc使用debug。這裡,我們把函數debug用到名稱、參數或者函數上。在這裡,不論任何時候調用debugfunc,我們的r控制台都通過每行開始的browse彈窗進入浏覽器模式。
浏覽器模式允許我們逐漸執行函數運算。我們将一些在調試過程中可能用到的單字母指令歸納為下表。
在下面的操作中,我們首先使用help來列出所有的指令。然後我們鍵入n來進入下一行。接着,我們鍵入objects和ls列出所有目前的對象。現在,我們可鍵入變量名來找出每個對象目前的值。最後我們鍵入q跳出調試模式,并使用undebug取消對函數的辨別。
2.其次,在行數左邊設定斷點,如圖2的所示。
3.然後,儲存代碼檔案并單擊source激活調試過程,如圖3所示。
4.激活函數的時候,你的r控制台會進入browse模式,如圖4所示。
現在你可以使用指令行或者debug下拉菜單來調試函數,如圖5所示。