- Posted by: Tommy Tran
- Wed, 13/05/2015, 8:11 (GMT+7)
- Thị trường công nghệ
- 0 Bình luận
Võ Xuân Tiến at GO1 giới thiệu XDebug tháng 05 năm 2015
Viết một ứng dụng PHP điều gặp khó khăn nhất so với các ngôn ngữ lập trình khác đó là việc debug – dò lỗi trong source code.
Nhưng điều đó không có nghĩa là không thể làm được. Xdebug là một công cụ dùng để debug source web viết bằng PHP, một việc làm rất quan trọng cho việc lập trình và tìm ra lỗi nhanh nhất.
Ngoài ra, Xdebug còn là một công cụ profiler rất tốt cho website. Đây là một tính năng giúp tìm ra thắt cổ chai (bottleneck) nhằm cải thiện tốc độ website.
About Vo Xuan Tien
- Drupal developer
- GO1
- 2 years experience
Outline
- Installation
- Features
- Demo
Installation
Ubuntu
sudo apt-get install php5-xdebug
CentOS, Fedora, RHEL, etc.
yum install php-pecl-xdebug.x86_64
Mac OSX using Homebrew
brew tap josegonzalez/homebrew-php brew install php55-xdebug
Windows
Download .dll files from http://xdebug.org/download.php
Compile from source
wget http://xdebug.org/files/xdebug-2.3.2.tgz tar -xvf xdebug-2.3.2.tgz cd xdebug-2.3.2 phpize && ./configure && make sudo cp modules/xdeabug.so /usr/lib/php5/20121212/
Wizard
Paste your phpinfo() here: http://xdebug.org/wizard.php
Configuration (localhost)
; /etc/php5/mods-available/xdebug.ini zend_extension=xdebug.so [xdebug] xdebug.remote_host=localhost xdebug.remote_connect_back=0 xdebug.remote_enable=1 xdebug.remote_autostart = 0 xdebug.default_enable = 1 xdebug.remote_handler=dbgp xdebug.remote_port=9000 xdebug.idekey=”netbeans-xdebug” xdebug.profiler_enable=0 xdebug.profiler_enable_trigger = 1
Configuration (lan)
; /etc/php5/mods-available/xdebug.ini zend_extension=xdebug.so [xdebug] xdebug.remote_host=192.168.1.234 xdebug.remote_connect_back=0 xdebug.remote_enable=1 xdebug.remote_autostart = 0 xdebug.default_enable = 1 xdebug.remote_handler=dbgp xdebug.remote_port=9000 xdebug.idekey=”netbeans-xdebug” xdebug.profiler_enable=0 xdebug.profiler_enable_trigger = 1
Configuration (virtualbox)
; /etc/php5/mods-available/xdebug.ini zend_extension=xdebug.so [xdebug] xdebug.remote_host=192.168.56.1 xdebug.remote_connect_back=0 xdebug.remote_enable=1 xdebug.remote_autostart = 0 xdebug.default_enable = 1 xdebug.remote_handler=dbgp xdebug.remote_port=9000 xdebug.idekey=”netbeans-xdebug” xdebug.profiler_enable=0 xdebug.profiler_enable_trigger = 1
Configuration (unknow ip)
; /etc/php5/mods-available/xdebug.ini zend_extension=xdebug.so [xdebug] ; xdebug.remote_host=localhost xdebug.remote_connect_back=1 xdebug.remote_enable=1 xdebug.remote_autostart = 0 xdebug.default_enable = 1 xdebug.remote_handler=dbgp xdebug.remote_port=9000 xdebug.idekey=”netbeans-xdebug” xdebug.profiler_enable=0 xdebug.profiler_enable_trigger = 1
Debug (bash)
; ~/.bashrc export XDEBUG_CONFIG="idekey=netbeans-xdebug"
Profiling (bash)
; ~/.bashrc export XDEBUG_CONFIG="profiler_enable=1" ; Or alias phpx='XDEBUG_CONFIG="profiler_enable=1" php'
Configuration (firewalls)
#!/bin/sh # Set-up a tunnel ssh -R 9000:localhost:9000 [email protected]
Features
- Remote debugging
- Code coverage analysis
- Profiling PHP scripts
Remote debugging
- We need a client (PHPStorm, Netbeans)
- Make sure client listen for debug connections.
- We need to start a debug session
-
We can start debug session via:
- Command line
- Web browser
- Browser extension for FF, Chrome, Safari, Opera
Code coverage analysis
- Tell you which lines of script (or set of scripts) have been executed during a request
- Tell you how good your unit tests are
Profiling PHP scripts
- Determine bottle neck
-
We need a tool to read output
- KCacheGrind
- WinCacheGrind
- Webgrind
Demo Debug web app
Demo Debug console app
Demo Code coverage
Demo Profiling
References
- Debug with netbeans
- Conditional breakpoint
- All settings
- Remote settings
- Quick start
- How to make xdebug faster