Debug de Aplicações PHP com XDebug e Eclipse PDT

No artigo anterior, demonstrei passo a passo como instalar no Ubuntu 9.10 a extensão XDebug, utilizada no debugging e profiling de aplicações PHP. Neste artigo demonstro as configurações necessárias para integrar esta ferramenta com a IDE Eclipse PDT.

Configurando o XDebug

Antes de ir ao Eclipse, é necessário modificar algumas diretrizes de configuração do XDebug, para isto basta abrir o arquivo de configuração do PHP como root:

sudo gedit /etc/php5/apache2/php.ini

E na seção:

[Zend]
zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"

Adicionar logo abaixo o seguinte conteúdo:

[xdebug]
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000

Após fazer isso, basta verificar se o phpinfo() traz o seguinte resultado:

Resultado da função phpinfo()

Com isso o XDebug está devidamente configurado.

Configurando o Eclipse

A primeira coisa a se fazer no Eclipse é adicionar o executável do PHP. No menu Window -> Preferences existe um menu lateral com o título PHP, ao expandí-lo aparecerá a opção PHP Executables, ao clicar nesta opção aparecerá a seguinte janela:

Janela de executáveis do PHP

Basta então clicar no botão Add e colocar um nome qualquer, informar o caminho do executável (por exemplo, /usr/bin/php) e escolher o tipo do debugger, que é XDebug. O próximo passo é configurar as informações do debugger no Eclipse, para isto basta ir em: PHP -> Debug -> Installed Debuggers, lá existirá uma entrada para o XDebug, basta verificar se a porta é a 9000, e caso não seja clicar em Configure e alterá-la. Após isto basta ir em PHP -> Debug e modificar o PHP Debugger para o XDebug.

Após estas configurações o Debugging do Eclipse já deverá estar funcionando. Caso não esteja, é necessário verificar se o servidor padrão está apontando para a URL correta do Web Server, para isto basta ir em Window -> Preferences -> PHP -> PHP Servers e editar as configurações do servidor padrão.

Exemplo de Debugging

Agora a última etapa é fazer um teste para verificar se tudo está funcionando. Para isso basta criar um projeto PHP, e criar um arquivo chamado teste.php. Dentro deste arquivo é acrescentado o seguinte conteúdo:

<?php
$teste = "ola";
$muaha = array();
for ( $i = 0; $i &lt; 3; $i++ ) {
	$muaha[] = $i;
}
array_shift($muaha);
echo "fim";

Ele é bastante simples, vai criar duas variáveis, fazer um laço para preencher o array, tirar o primeiro elemento do array e imprimir o texto fim. Para executar ele, basta clicar na pequena seta logo à direita do botão de Debug, como apresentado na imagem abaixo, e ir em Debug as -> PHP Web Page.

Botão de Debug no Eclipse

Ele então avisará para abrir a perspectiva de Debug, basta confirmar clicando em Yes e a seguinte tela aparecerá:

Perspectiva de Debug

Pode-se notar que existe uma barra logo à esquerda da numeração das linhas, ao clicar nesta barra será adicionado um breakpoint, que é um ponto de parada na execução do script, o que permite verificar a situação do script até este ponto, como as variáveis alocadas, o conteúdo delas etc. A nível de teste, basta colocar 2 breakpoints, um na linha 4 e outro na linha 8. Após isto basta executar o script, clicando no botão com seta verde, localizado na aba Debug, ele é apresentado na imagem abaixo:

Localização do botão para resumir a execução do script

Logo na primeira parada é possível verificar as variáveis, como o array vazio e a string devidamente preenchida, isto é apresentado na imagem abaixo:

Primeira execução do script

Ao clicar novamente no botão para resumir a execução do script, será feito um dos loops do for definido até que a condição especificada ($i < 3) seja cumprida, ou seja, serão necessários 4 cliques no botão para sair do for :P . Neste laço é possível verificar que o array vai sendo preenchido, e após sair do loop e parar na linha 8 o array está com apenas 2 elementos devido à função array_shift. As imagens abaixo representam, respectivamente, o fim do loop e a parada na linha 8.

Fim do loop: Array com 3 elementos

Parada na linha 8: Array com 2 elementos

E por último, é exibida a saída da página na tela, e a aba de variáveis é limpa, assim como apresentado na imagem abaixo:

Fim do Debug

Concluindo

O XDebug é uma ferramenta bastante útil para programadores PHP, com ela é possível debugar cada trecho do código para garantir uma maior consistência a ele e (tentar) eliminar bugs. Além de debug ela também fornece a funcionalidade de profiling, que será abordada em um artigo futuro. Até a próxima.

Instalando XDebug no Ubuntu 9.10

Olá a todos! Hoje demonstrarei os passos necessários para se instalar a ferramenta de debug e profiling para PHP chamada XDebug. Esta ferramenta é relativamente nova para mim, e pode ser uma grande aliada para garantir a performance e qualidade de seu código.

O primeiro passo é instalar os pacotes necessários para poder instalar o XDebug a partir do repositório de extensões PHP:

sudo apt-get install php5-dev php-pear

Com o PECL pode-se instalar novos pacotes no estilo do apt-get, utilizado para instalar pacotes no sistema operacional. Neste repositório é possível instalar o XDebug, para isso basta o seguinte comando:

sudo pecl install xdebug

Após a extensão ser instalada, é necessário verificar o caminho completo onde ela se encontra, para isso basta digitar o seguinte comando:

find / -name 'xdebug.so' 2> /dev/null

No meu caso o caminho retornado foi:

/usr/lib/php5/20060613+lfs/xdebug.so

Agora, a última etapa é configurar o php.ini:

sudo gedit /etc/php5/apache2/php.ini

E adicionar o seguinte conteúdo no fim do arquivo:

[Zend]
zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"

Onde o caminho utilizado para o atributo zend_extension deve ser o retornado pelo comando de pesquisa. Após isso basta reiniciar o serviço Apache:

sudo service apache2 restart

E então verificar a saída do phpinfo(), que deverá ter um trecho como este:

phpinfo() com dados do XDebug

phpinfo() com dados do XDebug

Bom, com isto a instalação do XDebug foi um sucesso, para quem quer mais informações sobre o XDebug e os repositórios oficiais do PHP:

Como o objetivo deste artigo era só abordar a instalação da extensão acredito que a missão esteja cumprida, em um artigo futuro farei um breve tutorial sobre como debugar os scripts PHP e, também, sobre como funciona a ferramenta de profiling desta extensão.
Para quem acompanhou os artigos sobre a arquitetura de software com CodeIgniter, também falo que em breve colocarei aqui o artigo para desenvolvimento de um sistema visando demonstrar o uso desta arquitetura. Agora o tempo está um pouco menos apertado, poderei me dedicar mais ao blog. Até mais.

LaTeX no Ubuntu 9.10

Olá a todo, como vão? Como estou tendo a necessidade de reinstalar os pacotes e ferramentas do LaTeX para continuar escrevendo minha monografia, resolvi escrever um artigo rápido explicando os pacotes necessários para ter o LaTeX junto com as ferramentas comumente utilizadas em trabalhos de monografia.

A primeira coisa a se fazer é instalar os pacotes do texlive:

sudo apt-get install texlive

Com ele, os principais pacotes utilizados no LaTeX já serão instalados. Após isso, é hora de se focar nos pacotes que fazem a formatação do trabalho seguindo as normas da ABNT. O primeiro pacote é um requisito exigido pelo pacote da ABNT, para instalar este requisito basta digitar o seguinte comando:

sudo apt-get install texlive-math-extra

Caso este pacote não seja instalado aparecerá o seguinte erro ao compilar um trabalho que utiliza o pacote de normas da ABNT:

LaTeX Error: File `stmaryrd.sty' not found.

Agora, basta instalar o pacote abntex, que é o responsável pela formatação do trabalho nas normas da ABNT:

sudo apt-get install abntex

Os principais pacotes estão instalados, então basta instalar a IDE utilizada na criação dos documentos TEX:

sudo apt-get install texmaker

Existem outras IDEs como, Kyle, porém eu me adaptei bem ao texmaker e ela é minha IDE padrão.

Agora, outra coisa utilizada na monografia é a lista de siglas/símbolos. Para fazer esta lista é utilizado o pacote glossaries. Para instalar o pacote glossaries existem alguns pré-requisitos que devem ser supridos, estes sendo os seguintes pacotes:

  • ifthen;
  • xkeyval;
  • xfor;
  • amsgen.

No meu caso foi necessário apenas o xfor, e o pacote do glossaries em si, baixei eles no seguinte link: http://www.ctan.org/pub/tex-archive/install/macros/latex/contrib/. Os pacotes “tds” são mais fáceis de se instalar, pois já estão configurados, basta jogar no banco de dados do LaTeX e atualizá-lo. Então, após baixar os pacotes: xfor.tds.zip e glossaries.tds.zip, em um terminal basta criar uma pasta para armazenar os pacotes:

mkdir ~/texmf

Extrair os pacotes no diretório:

unzip xfor.tds.zip  -d ~/texmf/
unzip glossaries.tds.zip -d ~/texmf/

E, finalmente atualizar o banco de dados do LaTeX:

texhash ~/texmf/

No meu caso, seguindo todos estes procedimentos, tudo deve estar funcionando. Se alguém encontrar erros por favor postem nos comentários que tentarei ajudar. Como este tutorial visava apenas apresentar os procedimentos para instalação, não incluirei exemplos para fazer os testes de cada um destes pacotes. Se alguém tiver curiosidade e quiser testar se tudo está funcionando, ver como criar as siglas e etc, recomendo o seguinte tutorial: Glossaries, Nomenclature, Lists of Symbols and Acronyms.

Por hoje é só, recomendo o LaTeX a todos que forem fazer a monografia ou demais trabalhos escritos, principalmente devido a falta de preocupação em ficar ajustando a formatação, já que ele faz isso automaticamente, além de diversas outras coisas que ele automatiza. Até a próxima!