我在 Xdebug 日志中不断收到此错误:
连接到客户端超时(等待:200 毫秒)。:-(
PhpStorm 中的调试器根本无法工作。
$ php -v
PHP 7.3.21 (cli) (built: Aug 4 2020 11:21:19) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.21, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)
我的 PHP Ini:
[xdebug]
zend_extension=".../php_xdebug-2.9.6-7.3-vc15-x86_64.dll"
xdebug.profiler_append=0
xdebug.profiler_enable=1
xdebug.profiler_enable_trigger=0
xdebug.profiler_output_dir = ".../tmp"
xdebug.profiler_output_name = "xdebug_profile.%R::%u"
xdebug.remote_enable=On
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_mode=req
xdebug.remote_port=9001
xdebug.auto_trace=1
xdebug.collect_includes=1
xdebug.collect_params=1
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1
xdebug.remote_log=".../logs/xdebug.log"
;xdebug.remote_connect_back=1
Run Code Online (Sandbox Code Playgroud)
登出:
==> xdebug.log <==
[17080] …Run Code Online (Sandbox Code Playgroud) 我有一个带有大量测试的 Laravel 项目。我使用 pcov 来计算代码覆盖率,大约需要 4 分钟。但 pcov 不支持分支覆盖,所以我决定使用 xdebug。
使用 xdebug 测试执行,使用代码覆盖率但不使用 --path-coverage(分支覆盖率)大约需要 8 分钟。
但是使用 xdebug、代码覆盖率和 --path-coverage(分支覆盖率)测试执行需要超过 2 个小时,甚至不能等到结束:
INFO[2021-09-14 21:33:24] Executing runtests with coverage xdebug
XDEBUG_MODE=coverage
php artisan test --parallel --processes=8 --verbose --passthru=--path-coverage tests/Feature --coverage-text
Warming cache for static analysis ... done [00:00.071]
............S................................................ 61 / 1180 ( 5%)
............................................................. 122 / 1180 ( 10%)
............................................................. 183 / 1180 ( 15%)
............................................................. 244 / 1180 ( 20%)
.......
INFO[2021-09-15 00:00:05] finished in 2h 26m 40.458565176s
Run Code Online (Sandbox Code Playgroud)
所以我的问题是 --path-coverage …
安装 Xdebug JIT 后不再工作:
PHP 警告:JIT 与覆盖 zend_execute_ex() 的第三方扩展不兼容。JIT 已禁用。在第 0 行未知
已经卸载了 Xdebug 并重新安装了 PHP,但我仍然收到错误。如何修复它?
apt-get remove --purge php-xdebug
apt-get install --reinstall php8.0-fpm php8.0-apcu php8.0-imap php8.0-curl php8.0-mysql php8.0-mbstring php8.0-bcmath php8.0-xml php8.0-redis php8.0-intl php8.0-soap php8.0-ssh2
Run Code Online (Sandbox Code Playgroud) 我正在使用 PhpStorm 版本 #PS-222.3345.135 的 Ubuntu 18.04 系统。我使用的是 PHP 7.4.20 和 Xdebug 2.9.8。
首先,当我没有在网络请求上运行 Xdebug 时,它们工作得很好。当我尝试使用 Xdebug 单步执行时,方法会过早退出,如下面的屏幕截图所示:
第一张截图:
执行在该launch()方法的第一行。因此,按“Step Over”按钮应将执行带到第 112 行。($this->_state->setAreaCode($areaCode));相反,按“Step Over”会提前退出该launch()方法并将执行线程带回该Bootstrap::run()方法,如下所示:
请注意,局部范围内没有$response变量run(),因为该launch()方法由于过早退出而不允许返回值。再次按 Step Over 将导致抛出异常$response->sendResponse(),如下图所示:
总而言之,这里的问题是 Xdebug 没有正确单步执行代码。这个问题直到上周才开始出现,并且我的项目路径映射与之前相同。
多个 PhpStorm 项目都发生这种情况,而不仅仅是这一个代码库。不过,我确实有一个 PhpStorm 项目(代码库要小得多),其中单步执行代码工作正常(结果我将 PhpStorm 内存限制升级到 2GB,但没有解决任何问题)。
有谁知道为什么会发生这种情况?
所以我在php.ini中添加了以下行:
zend_extension="Z:\wamp2\bin\php\php5.3.0\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
Run Code Online (Sandbox Code Playgroud)
xdebug确实位于该目录中,具有该文件名
我设置 report_zend_debug = 0
重新启动的wamp等
但xdebug仍然没有出现在phpinfo ....
apache错误日志显示以下内容:
PHP Warning: PHP Startup: Unable to load dynamic library 'Z:/wamp2/bin/php/php5.3.0/ext/php_imagick_ts.dll' - The specified module could not be found.\r\n in Unknown on line 0
[Mon May 30 19:07:42 2011] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Mon May 30 19:07:42 2011] [notice] Server built: Dec 10 2008 00:10:06
[Mon May 30 19:07:42 2011] [notice] Parent: Created child process 4260
Failed loading Z:\wamp2\bin\php\php5.3.0\ext\php_xdebug.dll
PHP Warning: …Run Code Online (Sandbox Code Playgroud) 如果我在netbeans中创建一个新项目并添加换行符,Xdebug完美无缺.但对于我有的cakephp项目,如果我添加换行符(即使在index.php文件中),xdebug也会忽略它.我想弄清楚最近发生了什么.
[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.auto_trace = 1
Run Code Online (Sandbox Code Playgroud)
我正在使用MAMP和Netbean作为我的工具.即使我使用xdebug_break()它仍然跳过.我确实有一个虚拟主机设置但不确定它是否与它有任何关系
开发机器
远程机器
/etc/php.ini文件
[xdebug]
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.remote_host="10.211.55.3"
xdebug.remote_log=/tmp/xdebug_remote_log
xdebug.remote_connect_back=1
Run Code Online (Sandbox Code Playgroud)
PHP文件都存在于远程机器上并映射到eclipse中的项目(即我可以在我的开发机器上看到实际文件).
我有一个调试配置,可以在调试器中运行,但不能在任何断点处设置或停止.我甚至试过xdebug_break() - 似乎忽略了它.
我尝试在远程机器上打开端口9000,没有区别.
我尝试将这个'-Djava.net.preferIPv4Stack = true'添加到eclipse.ini文件(在另一篇文章中找到 - 与IPv6与IPv4有关),但是没有用.
eclipse中的项目属性:
我不知道该尝试什么.任何帮助将不胜感激.
我尝试做并行调试.我用frontend.php和backend.php文件使用PhpStorm调试教程(大约30分钟或更长时间):
frontend.php文件:
<?php
$personJson = file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');
$person = json_decode($personJson);
var_dump($person);
Run Code Online (Sandbox Code Playgroud)
backend.php文件:
<?php
class Person {
public $name;
public $email;
}
$person = new Person();
$person->name = 'Something';
$person->email = 'something@something.com';
echo json_encode($person);
Run Code Online (Sandbox Code Playgroud)
我使用零配置方法.当我在带有调试会话的浏览器中启动前端文件时,在PhpStorm调试会话正在启动但我无法排队:
file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');
Run Code Online (Sandbox Code Playgroud)
转到backend.php教程中的文件(视频中的31:36).
问题:如何使其正常工作?在这个视频中没有更多,似乎它应该立即工作,但事实并非如此.
我从phpinfo中包含了我的xdebug配置
和PhpStorm中的xdebug配置 
我正在努力让PhpStorm和Xdebug在特定的Vagrant VM上正常播放。
如何为该VM连接PhpStorm和Xdebug时有效地跟踪并解决问题?
虽然我可以看到PhpStorm和Xdebug进行了一定程度的通信,但Xdebug的连接并没有启动PhpStorm的调试窗口,并且无法使用PhpStorm的调试功能。
有问题的工具组合为:
index.php第16行。我可以使这个Vagrant VM连接到Atom的php-debugXdebug集成。我还可以使PhpStorm连接到其他Vagrant实例的Xdebug!
来自相关服务器的Xdebug配置:
# xdebug.idekey = "PHPSTORM"
# xdebug.remote_connect_back = on
xdebug.remote_autostart = off
# xdebug.remote_connect_back = on
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.remote_host = 10.0.2.2 # IP of the host system
xdebug.remote_log="/tmp/xdebug.log"
xdebug.remote_mode=req
xdebug.remote_port=9000
Run Code Online (Sandbox Code Playgroud)
/tmp/xdebug.log使用此配置时,我在日志文件中看到输出。
/tmp/xdebug.log。/tmp/xdebug.log。/tmp/xdebug.log:[8264] Log opened at 2019-03-14 01:39:02
[8264] I: Connecting to …Run Code Online (Sandbox Code Playgroud)