簡體   English   中英

並行調試-xdebug和phpstorm

[英]Parallel debugging - xdebug and phpstorm

我嘗試進行並行調試。 我將PhpStorm調試教程 (約30分鍾以上)與frontend.php和backend.php文件一起使用:

frontend.php文件:

<?php

$personJson = file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');
$person = json_decode($personJson);

var_dump($person);

backend.php文件:

<?php

class Person {
    public $name;
    public $email;
}

$person = new Person();

$person->name = 'Something';
$person->email = 'something@something.com';

echo json_encode($person);

我使用零配置方法。 當我在帶有調試會話的瀏覽器中啟動前端文件時,在PhpStorm中調試會話正在啟動,但是我無法跨過行:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');

轉到教程中的backend.php文件(視頻中的31:36)。

問題:如何使其工作? 在此視頻中,僅此而已,似乎應該可以立即使用,但事實並非如此。

我包括來自phpinfo的xdebug配置 來自phpinfo的xdebug配置 和xdebug配置在PhpStorm中 PhpStorm中的xdebug配置

1. Settings | PHP | Debug | Max simultaneous connections Settings | PHP | Debug | Max simultaneous connections Settings | PHP | Debug | Max simultaneous connections -應該大於1。您已經設置了它。

2. xdebug.remote_autostart應該為1 / on 這將告訴xdebug嘗試調試每個單個請求,而不管調試cookie /參數如何。

這是必需的,因為您的第二個腳本將不會收到與原始腳本相同的cookie /參數(因為這在技術上是單獨的請求)。

是的,此選項可能不適用於日常開發,因為它將嘗試調試每個單個請求,並且如果調試客戶端不可用...您將看到腳本執行大約延遲1秒。

替代方法 (在您的特定情況下)將是在調用第二個腳本時將xdebug GET參數(例如?XDEBUG_SESSION_START=1 )添加到URL中。 這將告訴xdebug調試此請求。 例如:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php?XDEBUG_SESSION_START=1');

如您所見,這種方法需要修改代碼(請求的URL)。 通常這是不希望的。

另一種選擇是通過添加xdebug_break();來以編程方式設置斷點xdebug_break(); 即使沒有這些額外的參數/ cookie或remote_autostart設置,這也應該觸發調試器。

缺點是一樣的:需要代碼操作。 好處是-與更改URL相比,它應該更容易實現(+更容易閱讀/理解正在發生的事情)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM