前幾天在站內看到有人寫了篇 斷點除錯文章,於是我也動手學習下。
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執行路徑
設定debug 注意port為9001
新增servers
設定proxy
run->edit
新增php web page
設定打點位置,開始監聽
start
debug會開啟瀏覽器 比如 http://localhost/phpinfo.php?XDEBUG_SESSIO... 每次開啟url引數會變
結束監聽,否則頁面一直停留
以斐波那契數列為例子,看看迴圈呼叫了多少次!
//遞迴法
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 協議》,轉載必須註明作者和本文連結