mcpField
D
drupal-debugging

drupal-debugging

github.com/edutrul开发7350 次安装21 周前更新
代码仓库

关于 drupal-debugging

面向 Drupal 开发者的调试技能,涵盖 Drush 日志、PHP 与 Twig 检查、缓存、服务、模块及通过 DDEV 使用 XDebug,整理常见问题的诊断命令与检查方法。

主要功能

  1. 01筛选并查看 Drush 日志
  2. 02在 Drupal 环境中执行 PHP
  3. 03调试 Twig 模板及建议
  4. 04检查服务、模块和钩子
  5. 05清理缓存并检查缓存响应头
  6. 06通过 DDEV 管理 XDebug

适用场景

  1. 01追踪 Drupal 日志中的错误
  2. 02检查服务或类是否加载
  3. 03查明 Twig 模板未生效的原因
  4. 04排查缓存和钩子行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-debugging

安装后在 Claude Code 中输入/drupal-debugging确认已加载。

附带文件README.md

详细介绍

Drupal 调试

Drush 日志监视

# Watch all errors
ddev drush ws --severity=error

# Last 20 entries
ddev drush ws --severity=error --count=20

# Watch all log levels
ddev drush ws --count=50

# Specific type
ddev drush ws --type=php --count=20

PHP 内联调试

# Run PHP in Drupal context
ddev drush php:eval "var_dump(\Drupal::config('my_module.settings')->getRawData());"

# Check if service exists
ddev drush php:eval "var_dump(\Drupal::hasService('my_module.my_service'));"

# Check class autoloading
ddev drush php:eval "class_exists('Drupal\my_module\Service\MyService') ? print 'Found' : print 'Not found';"

# Inspect an entity
ddev drush php:eval "
\$node = \Drupal::entityTypeManager()->getStorage('node')->load(1);
print_r(\$node->toArray());
"

Twig 调试

在 sites/default/services.yml 中启用:

parameters:
  twig.config:
    debug: true
    auto_reload: true
    cache: false

然后在模板中:

{{ dump(content) }}
{{ dump(node) }}
{{ dump(_context|keys) }}

源代码中的 HTML 注释会显示模板建议:

Devel 模块

# Install devel
composer require drupal/devel
ddev drush en devel -y

在 PHP 中:

// Dump and die
dpm($variable);        // Krumo output in message area
ksm($variable);        // Krumo output (devel module)
dvm($variable);        // Var dump

// Krumo (in Twig via Devel)
// {{ devel_dump(node) }}

缓存调试

# Clear all caches
ddev drush cr

# Rebuild theme registry only
ddev drush php:eval "\Drupal::service('theme.registry')->reset();"

# Check cache hit for a page (Drupal page cache)
# Look for X-Drupal-Cache: HIT in response headers
curl -I https://my-project.ddev.site/

# Check Big Pipe and render cache
ddev drush state:get drupal.maintenance_mode

服务容器调试

# List all services matching a pattern
ddev drush devel:services | grep my_module

# List all services
ddev drush devel:services

# Check container definition
ddev drush php:eval "
\$def = \Drupal::getContainer()->getDefinition('my_module.my_service');
var_dump(\$def);
"

模块/Hook 调试

# List all enabled modules
ddev drush pm:list --status=enabled

# Check which modules implement a hook
ddev drush php:eval "
\$modules = \Drupal::moduleHandler()->getImplementations('form_alter');
print implode(', ', \$modules);
"

# Check module info
ddev drush pm:info my_module

常见问题及解决方案

问题解决方案
找不到类检查命名空间和 .info.yml 中的 PSR-4 配置,运行 composer dump-autoload
找不到服务检查 services.yml 语法,运行 ddev drush cr
未使用模板启用 Twig 调试,检查 HTML 注释中的模板建议
Hook 未触发检查类是否已在 services.yml 中注册,并验证 Hook 属性
配置未保存检查 config/schema/ 中是否存在配置架构
迁移失败运行 ddev drush ws 查看详情,并检查字段映射

使用 DDEV 和 XDebug

# Enable XDebug
ddev xdebug on

# Disable XDebug (performance)
ddev xdebug off

# Check XDebug status
ddev xdebug status

将 IDE(PHPStorm)配置为监听端口 9003。

评论

支持 Markdown