标签: xdebug

在 CentOS7 上安装 Xdebug,我收到错误未定义符号:compiler_globals

我在 php.ini 上定义了 xdebug.so 路径。

但我在 phpinfo() 函数中看不到 xdebug 信息。

和错误组合如下。

加载 /usr/lib64/php/modules/xdebug.so 失败:/usr/lib64/php/modules/xdebug.so:未定义符号:compiler_globals

我该如何解决这个问题?

使用 php 7.1.4 版本。

php centos xdebug

1
推荐指数
1
解决办法
1311
查看次数

XDEBUG 安装读取错误的 PHP 版本

我有一个在 php 7.1 上运行的 Ubuntu 16.04 vagrant box。当我尝试通过在 xdebug-2.6.0 中运行 ./configure 来构建 xdebug 时,我得到

Check for supported PHP versions... configure: error: not supported. Need a PHP version >= 7.0.0 and < 7.3.0 (found 5.5.9-1ubuntu4.24)
Run Code Online (Sandbox Code Playgroud)

PHP -v 产量

Xdebug requires Zend Engine API version 320170718.
The Zend Engine API version 320160303 which is installed, is outdated.

PHP 7.1.15-1+ubuntu14.04.1+deb.sury.org+2 (cli) (built: Mar  6 2018 11:27:08) ( NTS )
Run Code Online (Sandbox Code Playgroud)

所以系统正在运行 7.1,但由于某种原因配置脚本认为我们仍在 5.5.9

我已经在 google 上搜索了很多次,但仍然找不到更新 Zend 引擎的方法。

有任何想法吗?

php xdebug ubuntu-16.04

1
推荐指数
1
解决办法
2462
查看次数

Xdebug 远程调试器似乎跳转到随机位置

我的问题是,调试器总是在我设置的第一个断点处停止(与我在代码中设置的位置无关),但是当我继续执行时,它似乎跳转到代码中的随机位置。如果我使用“step into”、“step over”或“continue”,这里没有任何区别。我检查了键盘上的任何键是否卡住,但我在这里找不到任何东西,我还清理了浏览器缓存并使其失效PhpStorm 缓存。经过一段时间后,它再次正常工作,我可以随意走动。

另一个奇怪的部分是,它总是从每个设置的断点跳转到相同的随机位置,但每个断点都有另一个随机位置。

我正在使用 PhpStorm(最新版本)和 Xdebug 2.7 进行远程调试,配置如下

php.ini:

[Xdebug]
zend_extension="C:\xampp\php\ext\php_xdebug-2.7.0alpha1-7.0-vc14.dll"
xdebug.remote_enable=true
xdebug.remote_port="9000"
xdebug.remote_connect_back=true
xdebug.remote_autostart=1
xdebug.collect_return="0"
xdebug.profiler_enable=0;

xdebug.remote_log="D:\xampp\logs\xdebug.log"

xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host = 192.168.1.129
Run Code Online (Sandbox Code Playgroud)

PhpStorm:

在此处输入图片说明

我现在每两天或第三天都会遇到这个问题几个小时,只是无法弄清楚发生了什么。

是否有我在不知情的情况下激活的快捷方式或类似的东西?

debugging location xdebug phpstorm

1
推荐指数
1
解决办法
614
查看次数

如何使 XDEBUG 仅在 XDEBUG_SESSION_START 设置为特定值时触发?

有没有办法让 XDEBUG 仅在参数(通过 Session、Cookie、Get 等)通过特定值传递时触发?

我以前假设 XDEBUG 只会在 XDEBUG.IDEKEY(在我的 .ini 文件中)设置的值作为以下任一项传递时触发:

XDEBUG_SESSION=<idekey value> 或者 XDEBUG_SESSION_START=<idekey value>

但现在我注意到 XDEBUG 会在 XDEBUG_SESSION 或 XDEBUG_SESSION_START 设置时触发,无论值是什么。似乎价值可以是任何东西。

我想对其进行配置,以便仅当最终用户使用特定值(并且我的 IDE 设置为接受它)时才会尝试 XDEBUG 会话。如果该值不正确,则不应启动 XDEBUG 会话。

php debugging remote-debugging xdebug

1
推荐指数
1
解决办法
390
查看次数

如何在 Apache 中启用 XDebug 而不是在 CLI 中?

我想在 PHP 中启用由 Apache 运行的 XDebug 模块,但不是为 CLIphp命令启用。我在 Mac 上,我安装了 Homebrew 的 Apache (httpd) 和 PHP 7.3。

启用 XDebug 时,PHP 运行速度要慢得多,即使我没有调试给定的php命令。

php apache xdebug

1
推荐指数
1
解决办法
846
查看次数

PhpStorm - Xdebug 问题:在测试文件本地找不到文件“/project_path/Standard input code”

我正在努力让 Xdebug 在 PhpStorm 2020 上的 PHP 测试文件中工作。

我需要调试一些测试类以及 Xdebug 扩展,但我总是得到这个:

Cannot find file '/project_path/Standard input code' locally.
To fix it set server name by environment variable PHP_IDE_CONFIG and restart debug session.
Run Code Online (Sandbox Code Playgroud)

我尝试了我在网上找到的所有方法来修复它,但在我的情况下似乎没有任何效果。

我尝试设置PHP_IDE_CONFIG为环境变量并设置为localhost,也在 IDE 中添加 localhost 服务器,但仍然没有任何效果。我的同事无需进行任何特定配置即可让 Xdebug 在他们的 IDE 中工作。

“正常”的 PHP 文件可以工作,我只在测试文件上有这个问题。

任何的想法 ?

xdebug phpstorm atoum

1
推荐指数
1
解决办法
418
查看次数

如何在测试代码时完全覆盖条件(例如 PHP 和 xdebug)

不久前,我开始在 PHPUnit (v. 9) 中编写测试。这很棒而且令人惊奇,但是:

如何正确涵盖条件语句?

我将给出一些例子,其中结果是正确的和预期的,以及我发现问题的地方。这里是:

请注意,下面的代码只是示例。

我知道当我传递trueif语句时,将没有机会转到代码的其他分支。这只是尽可能简单的示例。

问题不存在的情况:

if (true) {
    return 'true';//here is covered
}
return 'false';//here is not covered    
Run Code Online (Sandbox Code Playgroud)

这没关系,但是如下:

return (true) ? 'true' : 'false';
Run Code Online (Sandbox Code Playgroud)

整行被视为覆盖,但显然 false 永远不会返回。

所以。我做什么坏事了?

唯一的解决方案是不使用三元运算符?它的语法非常短,但由于缺乏有关覆盖率的(真实/错误)信息而容易出错。:(

php phpunit code-coverage xdebug

1
推荐指数
1
解决办法
339
查看次数

使用 Vim 进行 Xdebug 配置

我在 Ubuntu 20.04 上使用 php 7.4.18 和 apache,其文档根位于/var/www/html. 这是我的 php --version

PHP 7.4.18 (cli) (built: May  3 2021 11:27:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.18, Copyright (c), by Zend Technologies
    with Xdebug v3.0.3, Copyright (c) 2002-2021, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)

我的 xdebug.ini

zend_extension=xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_mode = req
xdebug.remote_port = 9000
Run Code Online (Sandbox Code Playgroud)

我的.vimrc

let g:vdebug_options = {"port": …
Run Code Online (Sandbox Code Playgroud)

php vim xdebug

1
推荐指数
1
解决办法
982
查看次数

Sail - 从命令行启动 Xdebug 会话

所以 Sails 的最新版本使得使用 Xdebug 变得非常容易。基本上只需SAIL_XDEBUG_MODE.env文件中定义,在 PhpStorm 中配置路径映射,激活监听,一切就完成了 - 它可以在浏览器中完美运行。

现在,如果我想在使用命令行时激活 Xdebug,我该怎么做?就像使用 artisan 命令进行播种时一样,或者更好的是使用创建的自定义 artisan 命令来运行脚本来更新某些数据时......我找不到任何要添加到我的参数中的参数来sail artisan myOwnCommand告诉 Xdebug 它必须激活。

我正在使用 WSL2 在 Windows 11 上工作。

先谢谢了!

xdebug laravel laravel-sail laravel-9

1
推荐指数
1
解决办法
1038
查看次数

在 xdebug.mode=debug 中启用重载的 var_dump

var_dump()新的 Xdebug 似乎在调试模式下禁用了重载功能。我喜欢同时使用断点调试,但我被迫在var_dump 和断点之间var_dump()来回交换。xdebug.mode=developxdebug.mode=debug

有什么办法可以让超载的人var_dump()在入住时可以使用吗xdebug.mode=debug

这不是世界末日,但当我需要清理var_dump()以进行快速分析时,必须来回交换有点烦人。

php xdebug

1
推荐指数
1
解决办法
231
查看次数