Xdebug可以由Drush命令触发吗?


9

使用安装网站时,我的功能模块和安装配置文件出现问题drush si。Features问题队列中有许多可能相关的问题,但是没有一个好的解决方案。有趣的部分(在某些问题中提到)是,通过浏览器安装站点时,它可以正常工作,但使用进行安装时,它会失败drush si

我有什么问题的想法,但需要确认。我能想到的唯一确认方法是使用调试器逐步完成代码(Xdebug是我设置的)。因此,是否有可能从使用Drush运行的命令中触发Xdebug?具体来说,我可以在运行时让Xdebug启动drush si吗?

Answers:


4

您必须记住,使用drush可以使您(最可能是)处于cli,因此这应该有所帮助:

/programming/1947395/how-can-i-debug-a-php-cli-script-with-xdebug

另外,请尝试使用-d(--debug)选项运行命令-它应该为您提供很多有关发生问题的信息。


您可以在Drush / Drupal专用代码中添加一些有关设置断点的信息吗?即文件中的行号,如果运行drush,调试器将中断该行号?
therobyouknow 2014年

我的问题的答案似乎在这里:randyfay.com/content/…:-“如果要调试大多数紧急操作,则可以在include / bootstrap.inc中drupal_bootstrap()的第一行上设置一个断点。
therobyouknow 2014年

3

您可以使用xdebug_start_trace()xdebug_stop_trace()XDebug函数按需启动调试器。确保首先在CLI中配置了XDebug(php -i | grep xdebug)。

然后按如下所示创建新的一线PHP文件(例如drush_xdebug_start.inc):

<?php xdebug_start_trace();

然后按以下方式运行草绘:

drush --early="$PWD"/drush_xdebug_start.inc whatever_command_you_need

2

我一直在对请求请求使用XDebug。

  1. 通过运行确保XDebug已加载到CLI php中 php -i
  2. 确保您的客户端正在监听XDebug连接,并且正在正确的端口上监听。我已成功使用PHPStorm,Netbeans和Komodo IDE作为客户端进行了调试。

1
您能否举个例子说明在哪里(在drush本身内或在drush调用的另一段Drupal代码内)设置了一个断点,以便在运行drush时xdebug在这一行代码上中断?
therobyouknow 2014年

我的问题的答案似乎在这里:randyfay.com/content/…:-“如果要调试大多数紧急操作,则可以在include / bootstrap.inc中drupal_bootstrap()的第一行上设置一个断点。
therobyouknow 2014年

1

假设您已经正确配置了Xdebug,那么很容易集成IDE来逐步执行代码。只需将环境变量XDEBUG_CONFIG设置为“ idekey = MYIDEKEY”。

通过为其设置别名来使其更容易。这是我在.alias文件(tcsh)中使用的:

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.