Dear All~
今天來分享一下一些簡單的 debug 技巧
通常我們會把 error_report 打開來看,但進階一點,我們可以查看
/var/log/httpd/error.....
但如果今天所發生的都不是程式寫作上的錯誤,但我們又需要把變數印出來觀察,我們可以利用簡單的函式來幫我們處理~
這支程式我們將之儲存為 a.php
# cat a.php
內容如下:
<?
function debug($variable){
foreach($GLOBALS as $key => $value){
// 在篇加入了 debug_backtrace
$gINFO=debug_backtrace();
if($variable===$value){
echo '$'.$key.' => '.$value." 在 {$gINFO[0]['file']} 的第{$gINFO[0]['line']} 行\n";
}
}
}
$a="orz";
$test="3WA_".time();
${$test}="羽山大帥哥";
debug($a);
debug($test);
debug(${$test});
?>
簡單的用了幾個東西,debug_backtrace﹑$GLOBALS list~
嘗試執行的結果為:
$a => orz 在 /root/php/a.php 的第 15 行
$test => 3WA_1279175946 在 /root/php/a.php 的第 16 行
$3WA_1279175946 => 羽山大帥哥 在 /root/php/a.php 的第 17 行
看吧~我們可以輕鬆的把傳入 debug 用的變數 再度抓取出來列印
同時還可以利用 debug_backtrace 來看看錯在哪個檔案,的哪一行
簡單的小小 sample 啦~
不過以上並沒有嚴格的測試~
建議還是多參考一下各家的開發套件是怎實作除錯的功能~如 xoops debug message~
參考資料:
http://php.net/manual/en/function.get-defined-vars.php
http://us2.php.net/debug_backtrace