調試程序往往比編寫程序更浪費時間,正如一些有經驗的程序員所說,軟件的開發應該包括20%的程序編寫時間和80%的Debug時間。并且調試程序比編寫程序要難2倍。編寫巧妙的程序并不一定調試方便。
程序的調試有很多方法,比如最常見的VC之類的IDE都提供加斷點,逐步執行,逐段執行的功能。但是這只能針對程序某個微小的片段,對于前期bug的范圍的界定并不是很方便。況且對于不滿IDE的臃腫,身陷Vim, notepad++, Editplus之類的編輯器之中,我們需要找到更加高效的程序調試和測試方法。
在程序執行的關鍵點打印Log是一個非常高效的方法,如何打印log進行程序調試呢? 以PHP程序開發為例,需要2個步驟:
1. PHP函數中兩個關鍵的打印變量的方法
print_r var_dump
所以我們可以在關鍵的地方打印需要的變量。
2. 收集我們在程序中打印的變量
我們可以把程序執行過程中打印的變量逐條寫到文本文件里。在程序執行完畢之后進行分析,查找Bug,修正程序。
PHP中打印時間,和變量的程序片段:
function file_log($message) { global $file_log_location; ob_start(); echo date("Y-m-d H:i:s \t", time()); print_r($message); echo "\n"; $var = ob_get_contents(); ob_end_clean(); $open=@fopen($file_log_location,"a"); @fwrite($open,$var); fclose($open); }
應用此段程序還需要對log的存儲位置 $file_log_location 賦值。
在需要的地方插入此片段,執行PHP程序,就會得到所需信息。
但是假如是長時間運行的程序如何在程序執行的過程中就查看到log的信息?相信你已經想到了可以在shell中用
tail -f /var/debug.log
這樣總可以看到程序吐出的最新的debug信息。
附件是Drupal中進行debug的一個小的module,做drupal開發的同學可以嘗試一下。
雖然本文針對PHP開發所言,但是這種方法也適合python,java之類的動態語言的開發。
原文地址: http://blog.eood.cn/efficient_debugging_php_java_python
–EOF–
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
