debug en codeigniter

974 views
Skip to first unread message

leandro

unread,
Aug 31, 2010, 10:40:38 AM8/31/10
to CodeIgniter-spanish
Hola listeros,
soy nuevo en la lista y es posible que este tema haya salido (muchas)
veces ya.
La cuestión es que me da la impresión de que CodeIgniter no deja o no
está pensado para hacer
**********************
var_dump($variable); die();
**********************
dentro de un controlador. Incluso si lo hago en una vista me deja,
pero si lo hago en un controlador, de hecho, me tira un error y no
muestra la página.

Seguro que CodeIgniter tiene algún método para imprimir variables y
arrays.
Claro que podría hacer un helper o meter un método en el core para
poder heredarlo siempre, pero no me gustaría reinventar la rueda :)

Por cierto, hablando de debug me gustaría saber si existe algún
parámetro en las querys que me permita visualizar el SQL que esté
ejecutando el ActiveRecord.

Nada mas,
como en esta vida no todo es recibir, os digo que tengo el pdf del
libro "Professional CodeIgniter" el que lo quiera que me responda con
su correo y se lo mando.

Saludos,
-Leandro

Chispa28

unread,
Aug 31, 2010, 5:12:23 PM8/31/10
to CodeIgniter-spanish
Esto me pasaron a mi acá en el grupo para hacer debug y me resulto
muuuuy útil
pones en el controller;
$this->output->enable_profiler(TRUE);

Julian Magnone

unread,
Aug 31, 2010, 5:25:04 PM8/31/10
to codeignit...@googlegroups.com
El profiler es muy bueno. Si usas mucho AJAX entonces te va a convenir habilitarlo solamente para las llamadas No AJAX. De lo contrario tus llamadas AJAX seguramente no funcionen con el profiler habilitado.

Podés usar esto para saber si es un http request ajax o no:

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');

Pero, de todas formas respondiendo a tu pregunta, el var_dump() no tiene que ver con Codeigniter, sino con PHP... y sí funciona, lo que pasa es que si lo ponés en el controlador seguro se va a imprimir antes de enviar el contenido de la página. Para Arrays tenés el print_r() que te lo imprime mejor. De todas formas, como que no está muy bueno debugguear de esa manera, no? Y sino, en el peor de los casos podés mandarlo todo al archivo de log, para eso podés usar algo así:

log_message('debug', 'mensaje '.print_r($variable, TRUE) );

Saludos!


2010/8/31 Chispa28 <mfer...@gmail.com>

--
---
Para anular la suscripción a este grupo, envía un mensaje a
codeigniter-spa...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/codeigniter-spanish?hl=es.

Juanmy

unread,
Sep 1, 2010, 3:07:48 AM9/1/10
to codeignit...@googlegroups.com
Yo uso también la extensión firephp en CI para poder crear log, puntos de ruptura, etc.

Fásiko

unread,
Sep 1, 2010, 12:15:33 PM9/1/10
to codeignit...@googlegroups.com
firephp es realmente útil para estos menesteres.

Realmente lo que te voy a enlazar no es lo que andas buscando, pero viene bastante bien para depurar y revisar los rendimientos de cada consulta y parte de la aplicación.


Es realmente fácil de implementar y bastante útil la verdad.


iñigo medina

unread,
Sep 2, 2010, 5:15:12 AM9/2/10
to CodeIgniter-spanish
Ey!

trabajo con Leandro y todas vuestras respuestas nos han ayudado mucho
a encauzar la cosa. :)

@Fásiko
Muy buena la referencia. Lo hemos montado para tener un profiler un
poco más extendido que el nativo de CI.
Además de la librería, los hooks y los plugins que trae por defecto
php-quick-profiler-for-codeigniter, hemos
montado un config(item) para comprobar que nos encontramos en
desarrollo y un hook para evaluar ese config(item)
y a partir de ahí activar o no el profiler.

Así que la cosa queda de la siguiente manera.

En system/application/config:

$config['debug'] = ($_SERVER["REMOTE_ADDR"] == "127.0.0.1") ?
true : false;

En system/application/config/hooks:

$hook['post_controller'] = array(
'class' => NULL,
'function' => 'enable_profiler',
'filename' => 'profiler.php',
'filepath' => 'hooks',
'params' => array()
);

En system/application/hooks/profiler.php:

<?php
function enable_profiler()
{
$CI =& get_instance();
if($CI->config->item('debug')) {
$CI->output->enable_profiler(TRUE);
}
}
?>





On 1 sep, 18:15, Fásiko <fas...@gmail.com> wrote:
> firephp es realmente útil para estos menesteres.
>
> Realmente lo que te voy a enlazar no es lo que andas buscando, pero viene
> bastante bien para depurar y revisar los rendimientos de cada consulta y
> parte de la aplicación.http://miguelcarmona.name/blog/depuracion-y-rendimiento-de-una-aplica...
>
> Es realmente fácil de implementar y bastante útil la verdad.
>
> <http://miguelcarmona.name/blog/depuracion-y-rendimiento-de-una-aplica...>El

Chispa28

unread,
Sep 2, 2010, 5:22:14 PM9/2/10
to CodeIgniter-spanish
je me da hasta verguenza poner esto pero quizas a alguien le sirva,
print_r deja todo los datos en linea pero si ponemos un echo "<pre>
antes de el y luego de el mismo lo cerramos los datos se ven de una
forma más "leible" aunque puede llegar a ocupar varios renglones si
hay muchos elementos.
Como siempre me embolaba un cachito tener que digitar lo mismo y
encontrar algunas llamadas queponía por un lado y otro es que puse
dentro de un helper la siguiente función que aunque chapucera me sirve
y mucho;
function echo_array($pArray, $Band=''){
echo '#'.count($pArray);
echo "<pre>$Band";print_r($pArray);echo '</pre><hr>';
}
$pBand es una bandera para poner info para localizar la salida, por
ejemplo, si no me acuerdo en donde la puse
Reply all
Reply to author
Forward
0 new messages