1. 程式人生 > >如何快速定位BUG的方法

如何快速定位BUG的方法

快速定位BUG是程式設計師工作最頭疼的問題 沒有之一 尤其是當程式已經在online環境以後 So 聽我說 其實定位問題也沒有那麼的難

  1. log方法
    你要保證日誌的檔案許可權擁有許可權和在一個安全的位置 PHP指令碼放置的 Nginx 或 Apache的應用資料夾中 然後你可以自定義一下 error.log的位置 這個你可以在配置檔案中指定
    需要將php.ini中的配置指令做如下修改:

-

  • error_reporting = E_ALL ;將會向PHP報告發生的每個錯誤

  • display_errors = Off ;不顯示滿足上條 指令所定義規則的所有錯誤報告

  • log_errors = On ;決定日誌語句記錄的位置

  • log_errors_max_len = 1024 ;設定每個日誌項的最大長度

  • error_log = E:/php_log/php_error.log ;指定產生的 錯誤報告寫入的日誌檔案位置

 <?php      
  ## error_log 函式
  if(!Ora_Logon($username, $password)){     
        error_log("將錯誤訊息寫入到作業系統日誌中"
, 0); //將錯誤訊息寫入到作業系統日誌中 } if(!($foo=allocate_new_foo()){ error_log("傳送到管理員郵箱中", 1, ". mydomain.com"); //傳送到管理員郵箱中 } error_log("傳送到本機對應5000埠的伺服器中", 2, "localhost:5000"); //傳送到本機對應5000埠的伺服器中 error_log("傳送到指定的檔案中", 3, "/usr/local/errors.log"); //傳送到指定的檔案中
?>

2.安裝Debug外掛

xdebug.auto_trace = On    ;用於設定在指令碼執行前是否自動跟蹤方法的呼叫資訊。
xdebug.show_exception_trace = On    
xdebug.remote_autostart = On  ;通常需要使用一個特定的HTTP GET / POST變數開始遠端除錯(參見遠端除錯)。這個設定設定為1時,Xdebug將始終嘗試遠端除錯會話開始,嘗試連線到一個客戶,即使GET / POST / COOKIE變數並不需要。    
xdebug.remote_enable = On   ;這個開關控制Xdebug是否應該聯絡一個除錯客戶端監聽的主機和埠的設定
xdebug.remote_host = 127.0.0.1  ;  選擇主機的除錯客戶端執行時,可以使用主機名或IP地址。
xdebug.remote_port = 9000    
xdebug.remote_handler = dbgp   ;可以是“php3”選擇舊的PHP 3樣式偵錯程式輸出,’ gdb ‘使gdb偵錯程式介面或“dbgp”——偵錯程式協議。DBGp協議是唯一支援的協議。 
**注意:**Xdebug 2.1及以後版本只支援“dbgp”協議。   
xdebug.profiler_enable = on    ;建立配置檔案中的檔案輸出目錄。這些檔案可以被KCacheGrind看到您的資料視覺化。 

xdebug工具有很多設定的引數 是一款很方便快捷 跟蹤指令碼定位問題的超級好用的工具

3.自定義錯誤異常處理(try…catch Exception)

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo "Hello World\n";
?>

未完…待續