出色的文本和远程PHP调试断点

问题描述

我有一个运行带有PHP和Xdebug的Apache的FreeBSD服务器,以及一个运行Sublime 3.2.2的Mac OS客户端,用于开发和调试。使用SFTP在服务器和客户端之间交换代码文件。

我可以通过在Xdebug.sublime-settings中设置"break_on_start": true来逐步执行代码。堆栈跟踪,上下文,断点,所有内容都在这里:调试原则上起作用。

但是,在断点处停止执行不起作用。此外,调试期间不会显示代码中的当前位置(代码行左侧的绿色或黄色小箭头)。这将调试限制为从头开始逐步执​​行代码并从堆栈中读取当前代码位置。

我怀疑PHP代码必须在上载之前先添加调试信息(即断点),但是我找不到解决方法。

解决方法

Wesley使我走上了正确的道路,问题是本地文件和远程文件之间的映射。我终于可以在以下项目设置下使用它了:

{
"folders":
[
    {
        "path": "."
    },],"settings":
{
    "xdebug":
    {
        "url": "http://<myserver>/<serverpath>/<mytestfile>.php","path_mapping": {
            "<server path to php files>" : "<local path to php files>",}
    }
}

}

该问题可以在服务器的xdebug.log文件中看到,该文件报告的断点引用了客户端的文件系统而不是服务器的文件系统:

[49644] <- breakpoint_set -i 11 -n 8 -f file%3A///Users/<foo>/Documents/Development/foo/xdebugtest.php -t line

在修复了path_mapping断点定义后,可以报告以下内容:

[49638] <- breakpoint_set -i 8 -n 5 -f file%3A///usr/local/www/<foo>/xdebugtest.php -t line

请注意,同步本地文件和远程文件(此处为SFTP插件)的方式与该问题无关。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...