VSCode PHP Debug扩展路径转换,本地到服务器

时间:2017-10-18 02:08:50

标签: php visual-studio-code xdebug

在服务器上使用Visual Studio Code和XDebug调试PHP。服务器端配置为:

zend_extension=xdebug.so

xdebug.remote_enable=true
xdebug.remote_host=mybox
xdebug.remote_port=9000
xdebug.remote_log=/tmp/xdebug/xdebug-remote.log
xdebug.remote_autostart=1

xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir=/tmp/xdebug

launch.json中的配置为:

    {
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9000,
        "localSourceRoot": "Y:\\",
        "serverSourceRoot": "/home/seva/myproject",
        "stopOnEntry":true
    }

现在,当配置是这样的,并且我在浏览器中从该项目中调出一个页面时,调试器在第一个PHP行停止,从那时起,我可以设置断点并继续它们。但是,如果我在同一个文件中设置断点,将stopOnEntry设置为false并将其加载到浏览器中,则不会触发断点。我在这里缺少什么?

编辑:非常简单的代码,一行语句,没有符号链接,路径映射给VS代码。

EDIT2:在日志中发现了一条有趣的行:

<- breakpoint_list -i 5
-> <response xmlns="urn:debugger_protocol_v1" 
xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" 
transaction_id="5">
    <breakpoint type="line" 
        filename="file:///home/seva/y:/admin_main.php"
        lineno="5" state="enabled" hit_count="0" hit_value="0" id="274990011">
    </breakpoint>
    <breakpoint type="line"
        filename="file:///home/seva/y:/db.php"
        lineno="770" state="enabled" hit_count="0" hit_value="0" id="274990010">
    </breakpoint>
</response>

请注意断点对象上的文件名:file:///home/seva/y:/admin_main.php。这是本地路径和服务器路径的奇怪混搭。该文件确实位于服务器框上的/home/seva/myproject,它通过SAMBA作为\\servername\myproject共享,然后映射到我的本地驱动器Y:。

localSourceRootserverSourceRoot看起来不像我想象的那样......

EDIT3:当我将localSourceRoot更改为myproject时,日志中的条目仍为file:///home/seva/y:/admin_main.php。我没有看到Y:\来自哪里,除了它是我在VS Code中编辑的文件夹。因此,这些设置与当前文件夹路径之间存在一些有趣的相互作用。

EDIT4:我认为罪魁祸首是https://github.com/felixfbecker/vscode-php-debug/blob/5bfc474d681d5500d7b31d27bccdbfc08b88884e/src/paths.ts下的convertClientPathToDebugger()函数。它看起来是正确的 - 采用本地相对路径,应用于服务器根目录,获取服务器路径。

如果我能踏出那个......

1 个答案:

答案 0 :(得分:0)

这是PHP Debug扩展中的一个错误,它以区分大小写的方式处理Windows驱动器号。将localSourceRoot的值更改为y:\有帮助。

https://github.com/felixfbecker/vscode-php-debug/issues/197 https://github.com/felixfbecker/vscode-php-debug/pull/198