PHP的调试与Visual Studio代码和Xdebug。服务器端配置云:VSCode 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:发现在日志中一个有趣的线:
->
xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list"
transaction_id="5">
filename="file:///home/seva/y:/admin_main.php"
lineno="5" state="enabled" hit_count="0" hit_value="0" id="274990011">
filename="file:///home/seva/y:/db.php"
lineno="770" state="enabled" hit_count="0" hit_value="0" id="274990010">
注意断点对象的文件名:file:///home/seva/y:/admin_main.php。这是一个奇怪的本地路径和服务器路径混搭。该文件确实坐在/home/seva/myproject在服务器中,这是在SAMBA共享的\\servername\myproject,然后映射到本地驱动器ÿ:.
貌似localSourceRoot和serverSourceRoot不工作我以为的方式......
EDIT3:当我改变localSourceRoot到myproject,在日志中的条目仍具有file:///home/seva/y:/admin_main.php。我没有看到Y:\从哪里来,除了它是我在VS代码中编辑的文件夹。所以这些设置和当前文件夹路径之间会有一些有趣的相互作用。
如果我只能通过...
+0
这些都是什么样的线路?对于多行语句来说,实际的行在中间的某个地方..所以最好只在简单/单行语句中设置断点。不知道VSC究竟是如何工作的(PhpStorm用户在这里),但也许它与路径映射有某种关系?提醒一下 - xdebug(或可能是PHP本身)将使用最终/解析路径,而IDE /编辑器应该按原样使用路径。所以如果你有远程方面的象征性链接或类似的东西,最好把它带入一个帐户。将实际代码中的'xdebug_break();'放在需要时使用该选项=“false”? –
+0
会很好看Xdebug的日志,其中断点被击中在这两种情况下“真”与“假”的会议。现在我会建议创建一个新的简单脚本,其中包含几条简单的线条,每条新指令都在新行中,并查看它在那里的行为。像'