Ste*_*eve 10 php eclipse debugging breakpoints xdebug
客户端工具:(没有Apache,没有PHP)
用于PHP开发人员的Eclipse
版本:Oxygen.2发布(4.7.2)
Build id:20171218-0600
Redhat Enterprise Linux 6.9
java版"1.8.0_101"
Java(TM)SE运行时环境(版本1.8.0_101-b13)
Java HotSpot(TM)64位服务器VM(内置25.101-b13,混合模式)
远程服务器PHP Web应用程序的位置是:
PHP 5.6.5
Zend Engine v2.6.0,版权所有(c)1998-2014 Zend Technologies
Zend技术公司的Zend OPcache v7.0.4-dev,版权所有(c)1999-2014
与Derde Rethans的Xdebug v2.2.7,版权所有(c)2002-2015
我在此主题上发现了以前的帖子.我不明白所有要尝试的事情.我尝试了我能理解的东西,但没有任何运气.主要是使用xdebug_break(); (再次,没有运气)
我正在使用Eclipse和Xdebug来调试远程PHP网站.我的问题是我无法让调试器停在我设置的断点上.
我正在使用Eclipse和"同步PHP项目"进行远程PHP开发.除了Eclipse之外没有任何东西在我的计算机上运行.
我通过Eclipse在远程服务器上使用Xdebug调试器.
当我使用调试器时,它将转到index.php.我可以走一段时间,看看变量的价值.
问题是Xdebug不会在我设置的任何断点处停止.
我包括我的Xdebug设置
任何有关如何找到并解决问题的线索都会受到欢迎
Xdebug设置:
xdebug support,enabled
Version,2.2.7
DBGp - Common DeBuGger Protocol,$Revision: 1.145 $
Directive,Local Value,Master Value
xdebug.auto_trace,Off,Off
xdebug.cli_color,0,0
xdebug.collect_assignments,Off,Off
xdebug.collect_includes,On,On
xdebug.collect_params,0,0
xdebug.collect_return,Off,Off
xdebug.collect_vars,Off,Off
xdebug.coverage_enable,On,On
xdebug.default_enable,On,On
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.extended_info,On,On
xdebug.file_link_format,no value,no value
xdebug.max_nesting_level,100,100
xdebug.overload_var_dump,On,On
xdebug.profiler_aggregate,Off,Off
xdebug.profiler_append,Off,Off
xdebug.profiler_enable,Off,Off
xdebug.profiler_enable_trigger,On,On
xdebug.profiler_output_dir,/tmp,/tmp
xdebug.profiler_output_name,cachegrind.out.%t.%s,cachegrind.out.%t.%s
xdebug.remote_autostart,Off,Off
xdebug.remote_connect_back,On,On
xdebug.remote_cookie_expire_time,3600,3600
xdebug.remote_enable,On,On
xdebug.remote_handler,dbgp,dbgp
xdebug.remote_host,127.0.0.1,127.0.0.1
xdebug.remote_log,/var/log/xdebug/xdebug.log,/var/log/xdebug/xdebug.log
xdebug.remote_mode,req,req
xdebug.remote_port,9000,9000
xdebug.scream,Off,Off
xdebug.show_exception_trace,Off,Off
xdebug.show_local_vars,Off,Off
xdebug.show_mem_delta,Off,Off
xdebug.trace_enable_trigger,Off,Off
xdebug.trace_format,0,0
xdebug.trace_options,0,0
xdebug.trace_output_dir,/tmp,/tmp
xdebug.trace_output_name,trace.%c,trace.%c
xdebug.var_display_max_children,128,128
xdebug.var_display_max_data,512,512
xdebug.var_display_max_depth,3,3
Run Code Online (Sandbox Code Playgroud)
编辑
我创建了一个屏幕截图专辑.
第一个是来自Eclipse的错误消息,当我整夜离开它时发生.
屏幕截图的其余部分是我的phpinfo输出的顺序(顶部>向下).
我的phpinfo()输出中没有Zend部分,尽管有这些变量
report_zend_debug = on
zend.detect_unicode On
zend.enable_gc On
zend.multibyte Off
zend.script_encoding = no value
Run Code Online (Sandbox Code Playgroud)
根据您的描述,似乎:
我的假设是本地代码和服务器代码之间的文件映射不起作用,更确切地说,eclipse无法将您的文件映射到服务器代码.
要解决这个问题,您必须在eclipse项目的运行/调试设置中设置路径映射设置.
去:
尝试禁用诸如:opcache、zend 优化器等所有可用于解释 php 代码的扩展。如果你幸运并且它开始工作,请让 xdebug.so 最后加载,在所有其他模块之后,这样你就可以再次重新启用它们。将 xdebug.so 放在所有其他 php .so 所在的文件夹中,并将其加载到 php ini 的最后一行,并提供xdebug.so 的完整路径
如果你只是将它放在 php.ini 的最后一行,那么一些不兼容的模块可以在之后加载,配置来自 /etc/php/5.6/apache2/conf.d/*。因此,只需将配置移动一段时间即可。
在帖子底部的链接中,我完全禁用(但不通过 apt 删除)opchache 模块,并将其放置在 php.ini 中,调试器之前的 1 行中。
我记得,检查 phpinfo() 输出中扩展加载的顺序,位于 zend 徽标的左侧。调试器必须位于该输出块的最后一行。发布你的 phpinfo(); 输出。
另一种方式,我自己走:(我推荐它)
如果您拥有远程服务器的 root 访问权限,请尝试 Zend Debugger。它与 Zend Studio 捆绑在一起(不是免费的),但是某些 php 版本的调试器需要单独下载,5.6 是它可用的最新版本。他们没有为 php7 发布它,无论如何我不知道是否可以从试用版 Zend studio 复制它。如果删除了,无法下载,我可以发给你。
Zend 调试器现在更适合 php,Zend 团队参与了 Eclipse PDT 开发(但他们在付费版本中实现了最有品味的功能)
我的环境与你类似,XDebug 也有问题,然后决定删除它并尝试 Zend 调试器。我在askubuntu上有关于安装它和解决问题的问题和答案:https://askubuntu.com/questions/1002252/installing-configuring-zend-debugger-for-eclipse-pdt
简而言之,解决方案是:
在配置中注释掉它:(cli 版本似乎符号链接也被禁用)
lenya@JabbaDesktop:~$ sudo nano /etc/php/5.6/apache2/conf.d/10-opcache.ini
; configuration for php opcache module
; priority=10
; zend_extension=opcache.so
Run Code Online (Sandbox Code Playgroud)
在 /etc/php/5.6/apache2/php.ini 底部:
[Zend]
zend_extension="/usr/lib/php/20131226/opcache.so"
zend_extension="/usr/lib/php/20131226/ZendDebugger.so"
zend_debugger.allow_hosts=127.0.0.0/8,192.168.0.0/16
zend_debugger.expose_remotely=1
zend_debugger.connector_port=10137
Run Code Online (Sandbox Code Playgroud)
前两行(.so)应该完全按照这个顺序。 安装调试器“如何”很容易在谷歌中找到。没有人提到上面的问题。
更新:
当我使用调试器时,它将转到index.php。我可以单步执行一段时间并查看变量的值。
这意味着您已经连接到服务器,问题不存在
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |