我已经在三台独立的计算机上安装了Windows XAMPP软件包,其中2台运行Windows Vista 32位(1 Ultimate/1 Home Premium)和1台运行Windows Vista 64 Home Premium.
在php.ini中启用xdebug并重新启动apache后,查看默认的XAMPP localhost索引会导致apache每次都以相同的方式崩溃,并将"php_xdebug.dll"报告为故障模块名称.
以下是Windows崩溃报告器的完整报告:
Problem signature:
Problem Event Name: APPCRASH
Application Name: apache.exe
Application Version: 2.2.9.0
Application Timestamp: 4853f994
Fault Module Name: php_xdebug.dll
Fault Module Version: 2.0.3.0
Fault Module Timestamp: 47fcd9b9
Exception Code: c0000005
Exception Offset: 00008493
OS Version: 6.0.6001.2.1.0.768.3
Locale ID: 1033
Additional Information 1: a34a
Additional Information 2: c9c5f4fd744690d388ab9d5b3eb051a7
Additional Information 3: cb2e
Additional Information 4: 650bb5690556a17e911375b94d3e16f0
Run Code Online (Sandbox Code Playgroud)
我试过谷歌搜索这个问题,但没有找到任何解决方案,只有类似错误的报告.
编辑:我启用了php_xdebug.dll的扩展行,这似乎已经停止了崩溃到目前为止.
我的工作设置是Windows XP主机,运行Ubuntu VM LAMP堆栈.我正在使用PhpStorm在我的主机Windows机器上编辑我的代码.保存文件后,会自动通过SFTP上传到VM.除了调试之外,一切都适用于此过程.
我已经将PhpStorm设置为具有名为"UbuntuVM"的服务器,其中包含以下设置:
调试器:
- XDebug
调试会话设置:
- 在第一行中断
- 等待与ide键的连接:XDEBUG_PHPSTORM
在启动之前:
- 将文件上载到选定的服务器
我正在使用Chrome和Xdebug Helper,并将扩展设置为使用"其他"作为IDE,以"XDEBUG_PHPSTORM"为关键.
VM在php.ini中有以下内容:
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=10.1.6.22
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.collect_params=On
xdebug.show_local_vars=On
Run Code Online (Sandbox Code Playgroud)
当我在IDE中设置断点时,在Chrome中启用调试器,然后重新加载页面,我从未达到过断点; 并且IDE说"等待端口9000上的连接与ide键'XDEBUG_PHPSTORM'".
有谁知道为什么我没有达到我的破发点?
Xdebug轨迹中的内存值单位是多少?字节?
例如,我有这些线:
TRACE START [2011-11-30 13:11:18]
0.2122 2618704 +489048 -> require_once(...) ...:8
...
0.4147 6847864 +64 -> strtr(string(34), array(128)) ...:21
Run Code Online (Sandbox Code Playgroud)
那么,6847864 = 6.5MB吗?
有这样的事吗?
我在Windows上并使用WinCacheGrind应用程序,它似乎不适用于大文件(~2 MB).我收到"无法找到呼叫目标"等错误.
你知道用PHP编写的这些文件的任何解析器可以帮助我构建自己的cachegrind分析器吗?
我正在尝试远程调试工作.PHP正在VM上运行,我正在尝试从主机上的NetBeans进行调试.
我按照这里的说明,转发了Windows 7防火墙和VirtualBox网络设置中的端口9000,并在NetBeans中设置了路径映射.我的xdebug设置如下所示:
xdebug.remote_enable = On
xdebug.remote_connect_back = On
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_log = /tmp/xdebug.log
Run Code Online (Sandbox Code Playgroud)
当我加载我想调试的URL(使用正确的idekey)时,它会记录以下内容:
I: Checking remote connect back address.
I: Remote address found, connecting to 192.168.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1"
xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
fileuri="file:///home/dev/web/projects/project.com.vm/httpdocs/index.php"
language="PHP" protocol_version="1.0"
appid="1380"
idekey="netbeans-xdebug">
<engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
Run Code Online (Sandbox Code Playgroud)
但是,NetBeans仍在等待连接.除了设置断点之外,我已将其设置为在第一行停止.即使NetBeans未侦听,日志文件也将包含"已连接到客户端"消息.
知道我可能会缺少什么吗?
谢谢.
几个小时以来,我一直在反对这一点.
我已经回来在PHPStorm中做了一些工作,在几周后没有使用它,并且由于某种原因调试不再起作用.它曾经工作,但现在它没有,我不知道发生了什么.
我在Windows上运行,使用IIS,PHP版本5.3.8.安装了XDebug,我按照通常的说明在PHP.ini中设置了配置.
当我运行phpinfo()时,一切看起来都很正常(即XDebug就在那里).
我已经重新检查了各种设置,下载了比我正在使用的XDebug稍微更新版本的版本(Xdebug v2.2.1),但似乎没有任何东西可以将其付诸实践.
有人可以给我一些关于我接下来可以看到的线索吗?
更新:
我花了几个小时的时间来反对这一点,似乎没有进一步发展.根据phpinfo(),安装并加载了XDebug.我开启了日志记录,但它并没有真正告诉我很多,除了XDebug确实连接...
Log opened at 2013-02-17 04:13:07
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///C:/web/dbg/index.php" language="PHP" protocol_version="1.0" appid="6912" idekey="PHPSTORM"><engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
Log closed at 2013-02-17 04:13:07
Run Code Online (Sandbox Code Playgroud)
所以似乎问题出现在PHPStorm方面,但我看不到哪里.我尝试创建一个非常简单的项目,但无法进行调试.
每当我启用xdebug以使用以下标准设置调试我的php-projects时,它会在每个动作上减慢phpmyadmin的速度.刚开启phpmyadmin需要将近10秒钟.
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\xampp\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.remote_port = 9000
Run Code Online (Sandbox Code Playgroud)
编辑:试验和错误...这解决了问题
xdebug.remote_host = localhost
Run Code Online (Sandbox Code Playgroud) 我已经使用Homebrew ie 在我的mac上安装了PHP 7
$ brew install php70
Run Code Online (Sandbox Code Playgroud)
另外我想在我的机器上安装XDebug.
理想情况下,我希望有一个简单的解决方案,如再次使用brew,但不幸的是,似乎没有这样的公式存在(至少尚未),最新的包是homebrew/php/php56-xdebug.
我想在开始手动安装之前,请在此处查看是否还有其他解决方法.
任何建议将不胜感激.
我有一个运行PHP-FPM的PHP服务器,它通过端口上的nginx与fastcgi一起提供7000.此应用程序已停靠,并作为正在运行的容器运行,例如my_api.
的my_api搬运工容器可以连接到直接经由端口7000(对于健全检查),以及通过其充当nginx的反向使用上行流以暴露代理另一个容器my_api上的端口的应用程序(和其它)80和443(端口80重定向到SSL)通过proxy_pass指令在适当的位置.
如果我在端口上使用dbgp9000直接针对从http:// localhost:7000提供的文件启动XDebug会话,我可以看到调试会话已正确建立,我可以调试.
但是,如果我尝试针对nginx反向代理服务的URL启动XDebug会话,例如https:// localhost/my-api,则调试会话似乎没有启动,或者至少它没有正确创建连接(我的IDE中没有出现断点等).
如何为通过nginx反向代理发出的请求建立XDebug会话?
出于此问题的目的,下面是我的docker-compose.yml配置的(相关)示例,并且xdebug.ini:
docker-compose.yml:
version: "2"
services:
api:
build: <path_to_dockerfile>
ports:
- 7000:7000
#- 9000:9000 # may be uncommented for direct debugging access
nginx_proxy:
build: <path_to_dockerfile>
links:
...
- api:api
ports:
- 80:80
- 443:443
Run Code Online (Sandbox Code Playgroud)
xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=true
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_autostart=0
Run Code Online (Sandbox Code Playgroud)
注意:我尝试了几种不同的配置来尝试使其工作,包括启动运行dbgpproxy …
我在Visual Studio Code中使用插件PHP Debugger调试PHP代码。PHP <= 5.6时一切正常。调试器的工作就像一个魅力。但是,当我尝试使用PHP 7调试代码时,它无法按预期工作。它没有跳到我添加的断点,我被困在thounsand,除了
发生异常。不推荐使用的:与类相同名称的方法在将来的PHP版本中将不再是构造函数;RecurringType的构造函数已弃用
要么
发生异常。警告:AntlrLexer :: matchAny()的声明应与BaseRecognizer :: matchAny($ input)兼容
要么
发生异常。注意:试图获取非对象的属性
这些异常是由框架生成的,因此我无法全部解决,我只想跳过所有这些异常,而仅跳到我的断点。
我该如何实现?谢谢。