<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mundo Geek &#187; depuracion</title>
	<atom:link href="http://mundogeek.net/etiqueta/depuracion/feed/" rel="self" type="application/rss+xml" />
	<link>http://mundogeek.net</link>
	<description>Mundo geek, bitácora sobre todo lo geek: software, gadgets, tecnología, internet, ...</description>
	<lastBuildDate>Fri, 25 May 2012 14:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>La programación</title>
		<link>http://mundogeek.net/archivos/2012/04/03/la-programacion/</link>
		<comments>http://mundogeek.net/archivos/2012/04/03/la-programacion/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 09:00:48 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[citas]]></category>
		<category><![CDATA[depuracion]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=7823</guid>
		<description><![CDATA[Si la depuración es el proceso de eliminar errores, entonces la programación debe ser el proceso de introducirlos. ~ Edsger Dijkstra]]></description>
			<content:encoded><![CDATA[<blockquote><p>Si la depuración es el proceso de eliminar errores, entonces la programación debe ser el proceso de introducirlos.</p>
<p>~ Edsger Dijkstra</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2012/04/03/la-programacion/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Trazas de depuración en PHP</title>
		<link>http://mundogeek.net/archivos/2010/05/29/trazas-de-depuracion-en-php/</link>
		<comments>http://mundogeek.net/archivos/2010/05/29/trazas-de-depuracion-en-php/#comments</comments>
		<pubDate>Sat, 29 May 2010 18:02:43 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[depuracion]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=5613</guid>
		<description><![CDATA[Dos de las funciones más útiles a la hora de depurar una aplicación PHP cuando no podemos o no queremos utilizar un depurador completo son debug_backtrace y debug_print_backtrace. Estas funciones permiten, como es de esperar por su nombre, generar la traza inversa de la ejecución del script. Esto es, determinar las funciones cuya ejecución ha [...]]]></description>
			<content:encoded><![CDATA[<p>Dos de las funciones más útiles a la hora de depurar una aplicación PHP cuando no podemos o no queremos utilizar un depurador completo son <code>debug_backtrace</code> y <code>debug_print_backtrace</code>. Estas funciones permiten, como es de esperar por su nombre, generar la traza inversa de la ejecución del script. Esto es, determinar las funciones cuya ejecución ha provocado que el script llegue a esa línea de código, junto con los parámetros pasados a esas funciones. La diferencia entre ambas es que, mientras <code>debug_print_backtrace</code> imprime la traza en la salida estándar, <code>debug_backtrace</code> la guarda en un array.<span id="more-5613"></span></p>
<p>Supongamos que tuvieramos el siguiente código, por ejemplo:</p>
<pre name="code" class="php">&lt;?php
  function a($cadena, $repeticiones, $eliminar) {
    return b(str_repeat($cadena . ' ', $repeticiones), $eliminar);
  }

  function b($cadena, $eliminar) {
    return c(str_replace($eliminar, '', $cadena));
  }

  function c($cadena) {
    echo '&lt;pre&gt;';
    debug_print_backtrace();
    echo '&lt;/pre&gt;';

    return ucwords($cadena);
  }

  $cadena = a('Hola', 3, 'H');</pre>
<p>La llamada a <code>debug_print_backtrace</code> en la función <code>c</code> imprimiría algo parecido a lo siguiente:</p>
<blockquote><p>#0  c(ola ola ola ) called at [ejemplo.php:7]<br />
#1  b(Hola Hola Hola , H) called at [ejemplo.php:3]<br />
#2  a(Hola, 3, H) called at [ejemplo.php:19]</p></blockquote>
<link type="text/css" rel="stylesheet" href="http://mundogeek.net/sh/css/SyntaxHighlighter.css"></link>
<script language="javascript" src="http://mundogeek.net/sh/js/shCore.js"></script><br />
<script language="javascript" src="http://mundogeek.net/sh/js/shBrushPhp.js"></script><br />
<script language="javascript">dp.SyntaxHighlighter.ClipboardSwf = 'http://mundogeek.net/sh//flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2010/05/29/trazas-de-depuracion-en-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Depurar PHP con FirePHP</title>
		<link>http://mundogeek.net/archivos/2009/12/18/depurar-php-con-firephp/</link>
		<comments>http://mundogeek.net/archivos/2009/12/18/depurar-php-con-firephp/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 16:18:56 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[depuracion]]></category>
		<category><![CDATA[extensiones]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=4575</guid>
		<description><![CDATA[FirePHP es una extensión para Firefox que nos puede ayudar a depurar nuestro código PHP en esas ocasiones en las que utilizar un depurador, como Xdebug, puede ser exagerado. FirePHP se integra con Firebug, y permite imprimir mensajes en su consola utilizando distintas funciones PHP en nuestro código. Es decir, básicamente consiste en un echo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.firephp.org/" title="FirePHP">FirePHP</a> es una extensión para Firefox que nos puede ayudar a depurar nuestro código PHP en esas ocasiones en las que utilizar un depurador, como <a href="http://mundogeek.net/archivos/2009/12/11/depurar-php-con-xdebug/" title="Depurar PHP con Xdebug">Xdebug</a>, puede ser exagerado. FirePHP se integra con <a href="http://getfirebug.com/" title="Firebug">Firebug</a>, y permite imprimir mensajes en su consola utilizando distintas funciones PHP en nuestro código. Es decir, básicamente consiste en un <code>echo</code> o un <code>print_r</code> super vitaminado.</p>
<p>Para poder utilizar FirePHP tendremos que instalar primero, como es lógico, tanto <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> como el propio <a href="https://addons.mozilla.org/en-US/firefox/addon/6149">FirePHP</a>. A continuación activaremos la pestaña de Consola y Red en Firebug.<span id="more-4575"></span></p>
<p>Antes de poder llamar a las funciones de FirePHP en nuestro script tendremos que importar su código fuente, evidentemente. Si tenemos suerte es posible que si usas un framework o un CMS este ya incluya algún plugin para importarlo fácilmente, como es el caso de Joomla!, por ejemplo. En caso contrario bastará con <a href="http://www.firephp.org/DownloadRelease/FirePHPLibrary-FirePHPCore-0.3.1">descargar la librería</a> desde su sitio web, subir los archivos FirePHP.class.php y fb.php a tu servidor, y añadir una llamada a la función <code>require_once</code> en nuestro código.</p>
<p>Si queremos usar una API orientada a objetos importaremos FirePHP.class.php</p>
<pre name="code" class="php">require_once('FirePHP.class.php');</pre>
<p>Si queremos usar una API imperativa o una orientada a objetos con métodos estáticos importaremos fb.php</p>
<pre name="code" class="php">require_once('fb.php');</pre>
<p>Lo más rápido es utilizar la API imperativa, en cuyo caso basta con llamar a las función fb directamente. Esta función toma como argumentos el objeto a imprimir, y, opcionalmente el tipo de mensaje (<code>FirePHP::INFO</code>, <code>FirePHP::WARN</code>, <code>FirePHP::ERROR</code>, &#8230;)</p>
<pre name="code" class="php">fb("Hola mundo");
fb($_SERVER, FirePHP::INFO);</pre>
<p>Si usamos la API orientada a objetos también contaremos con otros métodos que no hacen más que llamar al método fb, tienen nombres que proceden del tipo de mensaje, y con los que no tenemos que especificar el tipo del mensaje como segundo parámetro:</p>
<pre name="code" class="php">$fp = FirePHP::getInstance(true);
$fp->fb("Hola mundo");
$fp->fb($_SERVER, FirePHP::INFO);
$fp->error("Mensaje de error");</pre>
<link type="text/css" rel="stylesheet" href="http://mundogeek.net/sh/css/SyntaxHighlighter.css"></link>
<script language="javascript" src="http://mundogeek.net/sh/js/shCore.js"></script><br />
<script language="javascript" src="http://mundogeek.net/sh/js/shBrushPhp.js"></script><br />
<script language="javascript">dp.SyntaxHighlighter.ClipboardSwf = 'http://mundogeek.net/sh//flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2009/12/18/depurar-php-con-firephp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

