Windows PHPstorm xdebug 斷點除錯

lovecn發表於2018-08-27

前幾天在站內看到有人寫了篇 斷點除錯文章,於是我也動手學習下。
1.安裝擴充套件xdebug
我用的是phpstudy環境,php版本為 php-7.1.13-nts,選擇下載的xdebug為 https://xdebug.org/files/php_xdebug-2.7.0a...

新增到php.ini

[XDebug]
xdebug.profiler_output_dir="D:\php_study\PHPTutorial\tmp\xdebug"
xdebug.trace_output_dir="D:\php_study\PHPTutorial\tmp\xdebug"
zend_extension="D:\php_study\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug.dll"
xdebug.remote_enable = on
xdebug.auto_trace = On
xdebug.remote_handler = dbgp     
xdebug.remote_host = localhost  
xdebug.remote_port = 9001 
xdebug.idekey = PHPSTORM
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.show_local_vars=0

2.配置phpstorm
file->setting-> 設定PHP執行路徑
file
設定debug 注意port為9001
file
新增servers
file
設定proxy
file
run->edit
file
新增php web page
file
file
設定打點位置,開始監聽
file
start
file
debug會開啟瀏覽器 比如 http://localhost/phpinfo.php?XDEBUG_SESSIO... 每次開啟url引數會變
file
結束監聽,否則頁面一直停留
file
以斐波那契數列為例子,看看迴圈呼叫了多少次!

//遞迴法
function fib_recursive($n){  
    if($n==0||$n==1){return 1;}  
    else{  
        return fib_recursive($n-1)+fib_recursive($n-2);  
    }  
}  
echo fib_recursive(10);

對比下

//陣列法
function fib_recursive($num){
    $arr=[];
    for($i=0;$i<=$num;$i++)
    {
        if($i==0 || $i==1){
            $arr[$i]=1;
        }else{
            $arr[$i]=$arr[$i-1]+$arr[$i-2];
        }
    }
    return $arr[$num];
}
print_r(fib_recursive(10));

3.問題
如果出現Can't start listening for connections from 'xdebug': Port 9000 is busy
可修改埠號,要修改兩個地方
第一個地方是剛才php.ini裡面的xdebug.remote_port=9001
第二個地方是phpstorm - setting - Languages&Frameworks -PHP - debug - 修改裡面的Debug port
4.感謝:
https://www.cnblogs.com/baocheng/p/5775938...
https://www.cnblogs.com/niuxiaoling/p/8027...
分享:Vagrant phpstorm xdebug
部落格:phpstrom xdebug 斷點除錯教程
https://xiaoxingping.top/book/show/1?id=13
使用phpstorm對docker中的指令碼進行debug

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章