Vitor Mattos
CTO da LibreCode, empreendedor, sempre buscando novos desafios e conhecimentos. Grande incentivador do software livre, evangelista PHP, palestrante em eventos regionais e nacionais.
Realizador de sonhos desde 2003
Amante de opensource
Palestrante
PHP Zend Certified Engineer ( ZEND024235 )
PHPRio ( https://telegram.me/phprio )
CTO Lyseon Tech
Redes sociais: ( VitorMattos ou VitorMattosRJ )
A Lyseon Tech é uma cooperativa de trabalho com modelo de gestão democrática, segura e eficiente composta por profissionais de T.I. altamente qualificados e experientes no mercado. Prezamos por apresentar vantagens, tanto para o cooperado como para as empresas parceiras.
O Xdebug é uma extensão que te ajuda a depurar seus scripts fornecendo uma grande quantidade de informações valiosas.
Debugando sem xdebug
Debugando sem xdebug
<?php
echo $variavel;
echo '<pre>';
var_dump($um_array);
echo '</pre>';
print_r($mais_uma);
error_log(
'passei aqui', 3, 'arquivo-de.log'
);
exit();
die();
return;
Debugando sem xdebug
Debugando com xdebug
Dica: Faça testes unitários
Na janela
Dá maior volta e não cabe em um slide,
segue o wizard que tem no site:
Repositório da distro
Funciona em qualquer ambiente que execute PHP, em distribuições Linux baseadas em Debian, faça da seguinte forma:
sudo apt-get install php-xdebug
O manual completo da extensão você encontra em:
xdebug.org
PECL
Pode instalar via PECL: repositório de extensões do PHP
sudo pecl install xdebug
O manual completo da extensão você encontra em:
xdebug.org
Source do Xdebug
Pode instalar via PECL: repositório de extensões do PHP
sudo apt-get install php phpize git
git clone git://github.com/xdebug/xdebug.git
cd xdebug/
phpize
./configure --enable-xdebug
make
sudo make install
O manual completo da extensão você encontra em:
xdebug.org
docker-compose.yml
php7:
build: .docker/php7
environment:
XDEBUG_CONFIG: "remote_host=172.17.0.1 remote_enable=1"
Dockerfile
# Install xdebug
RUN pecl install xdebug-2.9.1 \
&& docker-php-ext-enable xdebug
php -v
No terminal digite:
PHP 7.4.5 (cli) (built: Apr 17 2020 11:29:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Xdebug v2.9.4, Copyright (c) 2002-2020, by Derick Rethans
E verá isto:
<?php
phpinfo();
Se quando dá erro na aplicação fica uma grande tela branca...
Habilitando exibição de erros:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
OBS: ainda não estamos usando Xdebug aqui
O Xdebug faz um monte de texto ilegível...
Ficar assim...
No CLI - Command Line Interface
<?php
ini_set('xdebug.cli_color', 1);
var_dump([
'Pera',
'Uva',
'Maçã'
]);
É possível ocultar alguns erros no PHP com o @
Porém, é possível exibir novamente com o xdebug
xdebug.scream=1
php.ini
Se a aplicação por padrão não exibe erros, você pode fazer eles aparecerem.
xdebug.force_error_reporting=E_ALL
xdebug.force_display_errors=1
php.ini
xdebug.max_nesting_level=3
php.ini
PHP Fatal error: Maximum function nesting level of '3' reached, aborting! in /app/recursive.php on line 2
PHP Stack trace:
PHP 1. {main}() /app/recursive.php:0
PHP 2. a() /app/recursive.php:5
PHP 3. a() /app/recursive.php:3
VSCodium?
xdebug.remote_enable = 1
xdebug.remote_autostart=on
php.ini
docker-compose.yml
php7:
build: .docker/php7
environment:
XDEBUG_CONFIG: "remote_host=172.17.0.1 remote_enable=1"
Dockerfile
# Install xdebug
RUN pecl install xdebug-2.9.1 \
&& docker-php-ext-enable xdebug
Instale a extensão PHP Debug
Clique no botão para debugar
Clique aqui
Clique aqui
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/app": "${workspaceFolder}"
}
},
Tem autocomplete
A IDE precisa saber que o arquivo /app/index.php (exemplo) no servidor é encontrado na raiz da aplicação.
Algumas IDEs necessitam de dar start e stop para iniciar o debugging, existem extensões para diversos navegadores para fazer isto de forma prática.
./vendor/bin/phpunit --coverage-html coverage
Profiler integrado do Xdebug que permite encontrar gargalos no script e visualizá-los com uma ferramenta externa, como PHP Webgrind, MacAllGrind, kcachegrind ou WinCacheGrind.
- Linus Torvalds
#ShowMeTheCode
vitor@LT.coop.br
t.me/VitorMattos
By Vitor Mattos
CTO da LibreCode, empreendedor, sempre buscando novos desafios e conhecimentos. Grande incentivador do software livre, evangelista PHP, palestrante em eventos regionais e nacionais.