2010-08-13 14 views
8

ACTUALIZACIÓN - trabajando en conseguir WAMP con phpDeveloper/Xdebug en funcionamiento. Todavía quiero NetBeans: solo quiero comparar, ver si obtengo algunas ideas.NetBeans-Xdebug funciona, pero no expondrá algunas variables de PHP


estoy usando NetBeans 6.9 con lámpara y Xdebug para trabajar en código PHP. La pantalla Variables funciona bien, pero últimamente funciona menos bien. Por ejemplo a continuación, $authorized debe ser visible en el panel de variables debajo del código y debe exponer su valor. Pero no se muestra, ni su valor, y hacer un seguimiento del código no ayuda. (Se muestra el objeto $this y sigue y sigue, pero $authorized no está allí, y no tendría sentido si lo estuviera).

Este comportamiento es coherente. Tal vez es una función de la complejidad del código? O el uso desenfrenado de objetos? parece haber comenzado cuando tomé CodeIgniter.

Por supuesto, las variables están ocultas cuando más las necesito ... o eso le parece al pobre humano. ¿Qué me estoy perdiendo?

NetBeans debugger http://themanthursday.com/wiki/Debugger_Display.png

Hay un mejor ejemplo a continuación. Cuando paso por este código, Variables muestra solo Superglobals y $ this, como en la imagen. No puedo ver ningún valor, incluso meras cadenas.

(pensamiento persistente: apuesto a la CI $ SuperObject tiene algo que ver con todo esto ...)

class Product_documents { 
    function getProductImage_all($id) 
//Return an array of all documents for this product 
{ 
    $imgPath = $this->_getProductImage_folder($id); 
    $arrayPossibleFilenames = $this->_getProductImage_possible_files($id); 
    foreach ($arrayPossibleFilenames as $imgFile) { 
    $imgPathFull = $imgPath.$imgFile; 

    $file_exists = get_file_info($imgPathFull); 
    if ($file_exists) 
    { 
    $arrayFilesPresent[] = $imgPathFull; 
    } 
    } 
    return $arrayFilesPresent;   
} 
} 

Respuesta

8

Haga clic derecho en el panel de variables. Seleccione "Filtros". Encontrarás el secreto.

+0

Gracias Kamal. Irónicamente, borré NetBeans hoy, habiendo regresado a phpDesigner Pro ... y habiendo abandonado CodeIgniter hace algún tiempo. Sin embargo, continuaré viendo esta publicación con interés. Por cierto, llegué a la conclusión de que el uso de CI del patrón singleton era la clave; Me pregunto si el "secreto" que ofreciste lo validaría. – Smandoli

+0

¡Gracias! Pensé que era otro problema de xdebug, esto me ahorraría mucho tiempo – Benoit

+0

¿No podría decirme en cambio en qué consiste este "secreto"? Me gustaría saber sin tener que instalar NetBeans en mi iPad. – conny

-1

Trate inicializar $ autorizado a bool falsa.

He visto Netbeans no mostrarme las variables inicializadas con un valor de retorno de una función sin un doctype, pero es suficiente para no crear un patrón.

+0

Agregué esto justo encima del punto de ruptura: $ authorized = FALSE; Sin cambios. ¿Es eso lo que querías decir? Además, después de publicar, me di cuenta de que puedo producir un ejemplo más interesante de variables no expuestas ... Tal vez lo explique un poco más tarde. – Smandoli

+0

-1 porque la sugerencia no funcionó, por lo que la recompensa debería ir a otro lugar probablemente. Pero gracias Fanis por la sugerencia. – Smandoli

+0

Sin preocupaciones. Como dije, es acertado o extraño para mí. Otra cosa que he notado es que ocasionalmente no podrá recoger variables en el alcance global si el script que se está depurando no tiene funciones. – Fanis

2

He visto cosas como esta antes en Netbeans. Supongo que es solo un error que involucra la interacción de Netbean con XDebug. Una posible solución que he visto antes es agregar un "Ver" para la variable que no puede ver. Para su ejemplo, puede ir a la pestaña "Relojes" y escribir $authorized. Debería aparecer una vez que se haya establecido.

+0

Gracias, buena idea. No se me ocurrió usar un reloj, solo porque en VBA parecen ser especialmente ineficaces. Tengo que 'pensar fuera de la caja' - o para decirlo con más acierto, tengo que pensar dentro de una caja diferente. – Smandoli

+0

Sí, lamentablemente, este cuadro en particular podría no ser siempre el mejor entorno para pensar: P –

+0

Lamento decir que he estado ocupado y no lo he probado, pero espero probarlo esta noche. En cuanto al experimento WAMP, todavía tengo que terminar con un xDebug en funcionamiento. (A veces simplemente desearía poder hacer mi trabajo en tiempo real. Ja, ja.) – Smandoli

6

encontré con este sitio que tiene un muy buen enlace a una página de Xdebug que camina uno a través del proceso de actualización de Xdebug mediante la compilación de un 'más reciente' versión:

http://icephoenix.us/php/xdebug-doesnt-show-local-variables-in-komodo-netbeans-or-eclipse-pdt/

variables dentro de los objetos/las clases están apareciendo de nuevo! ¡Sí!

No hay relojes, no "esto puede hacer que Xdebug se vuelva loco", solo buenas variables que ahora exponen completamente el fracaso de mi solución ... (jaja).

David

+0

Xdebug 2.1.0RC funciona como el encanto – r15habh

0

Creo que se trata del patrón singleton que se implementa en CodeIgniter como "Super Object". Nunca reinicié este proyecto para probar la idea de Kamal. Poco después de publicar, concluí que el singleton era la razón (no traté de adivinar si Kamal tiene la solución o no). Por lo tanto, mi respuesta a this post.

0

(2015) En php.ini en [xdebug], establezca xdebug.show_local_vars = 1 si desea todas las variables locales en modo de depuración.

+0

No hace lo que piensas. Desde https://xdebug.org/docs/all_settings :: ¡Cuando esta configuración está configurada en algo! = 0 Los volcados de pila generados por Xdebug en situaciones de error también mostrarán todas las variables en el ámbito superior. Tenga en cuenta que esto puede generar mucha información y, por lo tanto, se desactiva por defecto. – Dakusan