使用VSCode时,当我在PHP文件中放置一个断点时,启动调试器并单击Run和Debug按钮,调试将按照预期的方式工作。执行在断点上停止,信息显示在左侧栏中。但是,当我使用"Listen“下拉(在创建了下面描述的launch.json文件之后)启动相同的进程,然后在我的浏览器中重新加载存在问题的PHP文件时,断点就会被忽略并加载网页。在过去,当此操作正常时,重新加载页面将触发调试,但在我重新安装VSCode和WinNMP之后,一些事情发生了变化,我不知道发生了什么。
我使用https://xdebug.org/wizard安装了Xdebug,并遵循了以下说明:
Download php_xdebug-3.1.5-8.0-vs16-nts-x86_64.dll
Move the downloaded file to ext, and rename it to php_xdebug.dll
Update D:\winnmp\conf\php.ini and add the line:
zend_extension = xdebug
Restart the webserver
我的Xdebug PHP.INI是:
zend_extension = xdebug
xdebug.mode = debug
我添加了xdebug.mode行,因为这是Xdebug指示的步骤调试。
我删除了一个先前的launch.json文件,对于launch.json,我点击了Run >> prior,这生成了这个launch.json;
{
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
我使用Firefox Developer作为我的浏览器。刷新我在VSCode中打开的带有断点设置的网页对VSCode中的调试没有任何影响。我尝试在CMD窗口中启动Firefox:
"C:\Program Files\Firefox Developer Edition\firefox.exe" -start-debugger-server
也没有什么区别。我将launch.json更改为:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Firefox",
"type": "firefox",
"request": "attach"
}
]
}
调试不受影响。
我已经安装了几个火狐扩展,依次是Xdebug、Xdebug和Zend-调试器工具栏。他们都没有任何效果。真正起作用的是安装了VSCode扩展,即火狐的调试器。在扩展的选项中,我将端口设置为9003,并输入了firefox.exe的绝对路径。完成此操作后,当我启动调试器时,Firefox请求获得连接到远程调试器的权限。我单击“是”,然后断点变成一个打开的灰色循环,如果刷新网页,则不会进行调试。
这是xdebug_info()中的打印输出。调试器=非活动似乎是错误的,但如果它实际上是错误的,我不知道该如何处理它。
Version 3.1.5
Support Xdebug on Patreon, GitHub, or as a business
Enabled Features
(through 'xdebug.mode' setting)
Feature Enabled/Disabled Docs
Development Helpers ✘ disabled
Coverage ✘ disabled
GC Stats ✘ disabled
Profiler ✘ disabled
Step Debugger ✔ enabled
Tracing ✘ disabled
Optional Features
Compressed File Support yes (gzip)
Clock Source GetSystemTimePreciseAsFileTime
Diagnostic Log
No messages
Step Debugging Docs
Debugger Not Active
PHP
Build Configuration
Version (Run Time) 8.0.11
Version (Compile Time) 8.0.19
Debug Build no
Thread Safety disabled
Settings
Configuration File (php.ini) Path no value
Loaded Configuration File D:\winnmp\conf\php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)
Directive Local Value Master Value Docs
xdebug.mode debug debug
xdebug.start_with_request default default
xdebug.start_upon_error default default
xdebug.output_dir C:\Windows\Temp C:\Windows\Temp
xdebug.use_compression 1 1
xdebug.trigger_value no value no value
xdebug.file_link_format no value no value
xdebug.filename_format no value no value
xdebug.log no value no value
xdebug.log_level 7 7
xdebug.var_display_max_children 128 128
xdebug.var_display_max_data 512 512
xdebug.var_display_max_depth 3 3
xdebug.max_nesting_level 256 256
xdebug.cli_color 0 0
xdebug.force_display_errors Off Off
xdebug.force_error_reporting 0 0
xdebug.halt_level 0 0
xdebug.max_stack_frames -1 -1
xdebug.show_error_trace Off Off
xdebug.show_exception_trace Off Off
xdebug.show_local_vars Off Off
xdebug.dump.COOKIE no value no value
xdebug.dump.ENV no value no value
xdebug.dump.FILES no value no value
xdebug.dump.GET no value no value
xdebug.dump.POST no value no value
xdebug.dump.REQUEST no value no value
xdebug.dump.SERVER no value no value
xdebug.dump.SESSION no value no value
xdebug.dump_globals On On
xdebug.dump_once On On
xdebug.dump_undefined Off Off
xdebug.profiler_output_name cachegrind.out.%p cachegrind.out.%p
xdebug.profiler_append Off Off
xdebug.cloud_id no value no value
xdebug.client_host localhost localhost
xdebug.client_port 9003 9003
xdebug.discover_client_host Off Off
xdebug.client_discovery_header no value no value
xdebug.idekey no value no value
xdebug.connect_timeout_ms 200 200
xdebug.scream Off Off
xdebug.gc_stats_output_name gcstats.%p gcstats.%p
xdebug.trace_output_name trace.%c trace.%c
xdebug.trace_format 0 0
xdebug.trace_options 0 0
xdebug.collect_assignments Off Off
xdebug.collect_return Off Off
发布于 2022-07-17 12:44:48
解决了!(在某种程度上)。我不知道为什么我的XDebug配置不能使用PHP8,但是我能够使用PHP7.4检索配置(感谢我最近安装的云版本备份软件)。下面是一些设置,通过在任何浏览器中刷新页面,在VSCode中为我提供了光荣的调试步骤。我将进行实验,看看是否可以将其应用于PHP 8,但目前一切都很好。我用文件比较软件检查了我拥有的php_xdebug.dll,并验证了它是这里列出的那个。
XDebug DLL:
php_xdebug-3.1.5-7.4-vc15-nts-x86_64.dll
Php.ini:
zend_extension = "php_xdebug.dll"
xdebug.mode = debug
xdebug.discover_client_host = 1
xdebug.start_with_request = yes
xdebug.client_port = 9000
Launch.json:
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9000
}
]
}
已安装与代码扩展(如果重要的话):
Bookmarks, Live SAAS Compiler, Local History, PHP Debug, Prettier-Code formatter, Rainbow Brackets, Trailing Spaces.
Settings.json (如果重要的话):
{
}
发布于 2022-07-17 13:11:00
上面提到的php.ini和launch.json设置确实与PHP8 (8.0.11)和XDebug.dll一起工作:
php_xdebug-3.1.5-8.0-vs16-nts-x86_64.dll
请注意,https://xdebug.org/wizard中提供的说明如下:
Update D:\winnmp\conf\php.ini to have the line:
zend_extension = xdebug
这与我的安装(WinNMP-- https://winnmp.wtriple.com/)中获得成功所需的行有很大的不同。
发布于 2022-10-06 11:09:23
在我的情况下,什么也不起作用,因为我必须更改默认9003中的端口。所以,首先我在launch.json文件中更改我的端口
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 11011
},
在php.ini文件中
zend_extension = xdebug //Remember this is your file name which you downloaded
xdebug.mode = debug,develop
xdebug.discover_client_host = yes
xdebug.log_level = 0
xdebug.log = "C:\WINDOWS\temp\log.txt"
xdebug.client_port = 11011
xdebug.start_with_request = yes
xdebug.idekey = VSCODE
不要忘记重新启动服务器,并通过phpinfo()
在浏览器中验证所有这些配置。
https://stackoverflow.com/questions/73007861
复制