2009-12-22 12 views
22

No me he dado cuenta de esto. CADA pieza de documentación que he encontrado cubre cómo usar xdebug para depurar scripts que se ejecutan en Apache. Necesito depurar una secuencia de comandos CLI de php.¿Cómo puedo depurar una secuencia de comandos CLI de PHP con xdebug?

Entonces, por ejemplo, ¿cómo paso la variable XDEBUG_SESSION_START para que xdebug se active?

Estoy tratando específicamente de depurar un shell de CakePHP. Entonces, si alguien tiene una idea adicional de eso, estaría muy agradecido.

Gracias.

+0

También puede que desee ver aquí: http: // stackoverflow.com/questions/2288612/how-to-trigger-xdebug-for-a-command-line-php-script – selfawaresoup

Respuesta

36

Hay un par de notas acerca de que en Xdebug's manual, como, por ejemplo, (citando):

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

Si está utilizando Eclipse PDT para desarrollar y depurar sus scripts PHP, no hay mucha diferencia entre Apache o CLI: la configuración es bastante similar, simplemente no tiene que configurar un servidor web ni indicar una URL; en su lugar, debe indicar la ruta al ejecutable de PHP.

Acerca de la variable XDEBUG_SESSION_START: bueno, inicia la secuencia de comandos completa en "modo de depuración", por lo que no tiene ninguna noción de "depuración de sesión", diría.


Por ejemplo, esto es lo Window > Preference > PHP > PHP executables se parece a mí en este momento, y, a la derecha, lo que me pasa cuando se hace clic en el botón Edit de la primera de ellas:

http://extern.pascal-martin.fr/so/xdebug-cli/1.png     http://extern.pascal-martin.fr/so/xdebug-cli/1-edit.png

Y la ventana debug configurations:

http://extern.pascal-martin.fr/so/xdebug-cli/2.png

y el lanzamiento de la depuración: simplemente funciona:

http://extern.pascal-martin.fr/so/xdebug-cli/3.png


Esperanza esto ayuda :-)

Si no, qué problema específico es lo que encontró?

8

Si está utilizando bash (o concha similar), este pequeño script puede ser útil:

alias drush-debug=drd 
function drd { 
    export XDEBUG_CONFIG="idekey=cli_session" 
    export SERVER_NAME="developer.machine" 
    export SERVER_PORT="9000" 
    drush "[email protected]" 
    unset XDEBUG_CONFIG 
    unset SERVER_NAME 
    unset SERVER_PORT 
}; 

o según lo sugerido por los comentaristas a continuación

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "[email protected]"' 

De esta manera usted don' t tiene que configurar y desarmar manualmente la variable desencadenante cada vez que quiera depurar.

+6

Esto es lógicamente equivalente a poner la variable de entorno en la misma línea que el comando en bash, es decir: "XDEBUG_CONFIG = 'idekey = cli_session' drush $ * ". No hay necesidad de una función que establezca y luego desactive la variable, el shell exportará la variable automáticamente al comando. – Stabledog

+1

@Stabledog Esto, sin embargo, si no están desarmados xDebug se habilitará para todos los comandos drush subsiguientes en el shell actual, si no me equivoco. La idea detrás de esta función era habilitar temporalmente la depuración CLI PHP, pero tiene sus salvedades. – Plamen

+1

@Plamen usa 'drush" $ @ "' en su lugar. bash expandirá cada argumento con comillas para que el registro de tema 'drush-debug cc '' 'funcione. No es el aspecto más intuitivo de bash, pero es agradable tenerlo. –

2

simplemente ponga la siguiente sección para su php.ini

[XDebug] 
xdebug.max_nesting_level = 200 
xdebug.remote_enable=1 
xdebug.remote_port=9000 
;xdebug.profiler_enable=1 
xdebug.idekey=PHPSTORM 
xdebug.remote_autostart=1 

y reemplace PhpStorm con su ide clave

Cuestiones relacionadas