【发布时间】:2010-12-29 04:15:22
【问题描述】:
我还没有完全弄清楚这一点。我发现的每篇文档都涵盖了如何使用 xdebug 来调试在 Apache 中运行的脚本。我需要调试一个 php CLI 脚本。
那么,例如,我如何传递 XDEBUG_SESSION_START 变量以启动 xdebug?
我专门尝试调试 CakePHP shell。因此,如果有人对此有任何额外的见解,我将不胜感激。
谢谢。
【问题讨论】:
我还没有完全弄清楚这一点。我发现的每篇文档都涵盖了如何使用 xdebug 来调试在 Apache 中运行的脚本。我需要调试一个 php CLI 脚本。
那么,例如,我如何传递 XDEBUG_SESSION_START 变量以启动 xdebug?
我专门尝试调试 CakePHP shell。因此,如果有人对此有任何额外的见解,我将不胜感激。
谢谢。
【问题讨论】:
Xdebug's manual 中有一些关于此的注释,例如(引用):
export XDEBUG_CONFIG="idekey=session_name"
php myscript.php
如果您使用 Eclipse PDT 开发和调试 PHP 脚本,Apache 或 CLI 之间没有太大区别:配置完全相同,您不必配置 Web 服务器,也无需指定 URL ;相反,您必须指明 PHP 可执行文件的路径。
关于XDEBUG_SESSION_START 变量:嗯,你在“调试模式”下启动整个脚本,所以你没有任何“调试会话”的概念,我会说。
例如,这就是我现在看到的Window > Preference > PHP > PHP executables 的样子,右边是我点击第一个按钮的Edit 时得到的结果:
(来源:pascal-martin.fr)
(来源:pascal-martin.fr)
还有debug configurations 窗口:
(来源:pascal-martin.fr)
并启动调试:它可以正常工作:
(来源:pascal-martin.fr)
希望这会有所帮助:-)
否则,您遇到了什么具体问题?
【讨论】:
如果您使用 bash(或类似的 shell),这个小脚本可能会派上用场:
alias drush-debug=drd
function drd {
export XDEBUG_CONFIG="idekey=cli_session"
export SERVER_NAME="developer.machine"
export SERVER_PORT="9000"
drush "$@"
unset XDEBUG_CONFIG
unset SERVER_NAME
unset SERVER_PORT
};
或按照以下评论员的建议
alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"'
这样您就不必在每次要调试时手动设置和取消设置触发器变量。
【讨论】:
drush "$@"。 bash 将用引号扩展每个参数,以便 drush-debug cc "theme registry" 可以工作。这不是 bash 最直观的方面,但很高兴拥有。
drd 比每次调用命令时都预先添加一堆变量要容易得多。
alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"'。请注意,变量赋值和 drush 调用之间没有分号。该变量将仅在 drush 调用期间设置,不会导出到 shell。
只需将以下部分放到您的 php.ini 中
[XDebug]
xdebug.max_nesting_level = 200
xdebug.remote_enable=1
xdebug.remote_port=9000
;xdebug.profiler_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1
并用您的 ide 密钥替换 PHPSTORM
【讨论】:
对于 Windows 和 Visual Studio Code,以下是如何继续:
从https://xdebug.org/download 下载 xdebug。例如php 7.4 Windows 64bit https://xdebug.org/files/php_xdebug-2.9.5-7.4-vc15-nts-x86_64.dll
将 xdebug dll 复制到您的 php 扩展目录 (ext)。
添加到 php.ini 的末尾
[XDebug]
zend_extension=php_xdebug-2.9.5-7.4-vc15-nts-x86_64.dll
xdebug.remote_enable=1
xdebug.remote_autostart=1
打开 VSCode 并安装 https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
在 VSCode 中打开项目工作区,转到“运行”选项卡,单击齿轮并添加这些行
{
"name": "listen CLI",
"type": "php",
"request": "launch",
"port": 9000
},
{
"name": "run CLI",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
在要调试的脚本中放置断点
选择“运行CLI”并点击“开始调试”
调试愉快!
【讨论】: