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 username@dev.example.com

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

 

Bạn thấy bài viết này như thế nào?: 
No votes yet