Cấu hình XDebug trên NetBeans và cách sử dụng FirePHP
Viết lúc 13:59 ngày 16/04/2010 bởi Administrator .
Lâu rồi không xuất bản bài hướng dẫn lào ! hôm lay dù công việc hơi bị nhiều nhưng thỏa theo ước nguyện của bác Về Đâu, nên phải đành đoạn dành chút thời gian viết bài hướng dẫn cách cấu hình X-Debug và sử dụng FirePHP.
X-Debug là gì ?
Đọc cái tên nghe là biết nó là cái gì rồi !? X-Debug dùng để kiểm tra lỗi ứng dụng PHP của bạn, còn muốn hiểu hơn về nó nữa thì vào đây đọc tiếp
Cấu hình X-Debug ?
Để cấu hình X-Debug, điều đầu tiên bạn cần là download file DLL mới nhất tại XDebug website. Tốt nhất bạn nên sài phiên bản 2.x dành cho PHP phiên bảng 5.2.x. Khi tớ viết bài này thì tớ sài bảng php_xdebug-2.0.5-5.2.
Chỉnh sửa PHP.INI tại path-to-webserver/apache/bin/ Lưu ý là bạn nên sửa PHP.INI trong apache/bin và không nên sửa tại path-to-webserver/php/. Đây là sai lầm lớn nhất của mọi người và cả người thực hiện bài viết này 
Thêm dòng mã sau vào cuối của file PHP.INI
- zend_extension_ts = path-to-webserver/php5/xdebug/php_xdebug-2.0.5-5.2.dll
- xdebug.remote_enable=1
- xdebug.remote_handler=dbgp
- xdebug.remote_mode=req
- xdebug.remote_host=127.0.0.1
- xdebug.remote_port=9001
Tiếp theo, tăng bộ nhớ PHP lên 128M (mặc định là 8M ^^! nếu tớ không lầm). Lưu PHP.INI và restart lại WebServer, vào đường dẫn http://localhost/phpinfo.php và nhìn hình dưới đây, nếu phpinfo của bạn giống thế thì bạn đã install thành công rồi.
Để chạy ứng dụng, bạn vào NetBeans và nhấn vào nút như hình đầu tiên.
chúc bạn thành công.
Cách sử dụng FirePHP
Ở bài viết trước, tớ đã có giới thiệu một tý về FirePHP, các bạn có thể tìm đọc lại ở đây: Tìm hiểu về firebug. Nhiều người sau khi cài Extension FirePHP cho FireBug xong thì chả biết cách sử dụng nó như thế nào !? thế là reinstall hoặc để đó cho nó "oách"
, vì thế ở bài viết này, tớ sẽ hướng dẫn các bạn cách sử dụng nó một cách hiệu quả nhất có thể.
Điều đầu tiên, bạn cần cài đặt FirePHP (đối với các bạn chưa cài FirePHP thì vào đây), tiếp theo để có thể sài được FirePHP thì bạn download Thư viên FirePHPCore ở đây.
Sau khi download xong thì extract và tạo cấu trúc như trong hình dưới:
hix viết 1 lúc quên lưu, thế là lại viết lại
không hiểu mình bị gì nữa :|
Ok, tiếp tục bài viết, bạn để ý hình ở trên, sau khi extract chúng ta được 5 file, trong đó file LICENSE thì bạn khỏi quan tâm (chả bao giờ tớ xem cái này
). FirePHP cung cấp cho bạn đầy đủ nhất có thể, ở đây nó còn support cho bạn cả PHP 4 (chả ghiền cái này) và 2 loại API cho bạn sử dụng ?! nó là gì ? hehe
nó là Object Oriented API và Procedural API. Nếu ứng dụng của bạn viết theo chuẩn OOP thì bạn nên sử dụng Object Oriented API, còn ngược lại thìProcedural API.
Tạo một file index.php trong thư mục FirePHP và .... continued
Object Oriented API
- require_once('FirePHPCore/FirePHP.class.php');
- $firephp = FirePHP::getInstance(true);
- $firephp-> *
- require_once('FirePHPCore/fb.php');
- FB:: *
- $firephp->setEnabled(false); // or FB::
- FB::send(/* See fb() */);
Procedural API
- require_once('FirePHPCore/fb.php');
- fb($var)
- fb($var, 'Label')
- fb($var, FirePHP:)
- fb($var, 'Label', FirePHP:)
Chức năng của FirePHP
Bắt đầu tìm hiểu về cách chức năng của FirePHPCore nhé 
Cấu hình & Object Filters
- <?php
- ob_start();
- // Defaults:
- $options = array(
- 'maxObjectDepth' => 10,
- 'maxArrayDepth' => 20,
- 'useNativeJsonEncode' => true,
- 'includeLineNumbers' => true
- );
- // Object Oriented API
- require_once('FirePHPCore/FirePHP.class.php');
- $firephp = FirePHP::getInstance(true);
- // cấu hình
- $firephp->getOptions();
- $firephp->setOptions($options);
- // Object Filters
- $firephp->setObjectFilter('ClassName', array('MemberName'));
- // Procedural API
- require_once('FirePHPCore/fb.php');
- // cấu hình
- FB::getOptions($options);
- FB::setOptions($options);
- // Object Filters
- $firephp->setObjectFilter('ClassName', array('MemberName'));
Error, Exception & Assertion Handling
Gởi tất cả các thông báo lỗi (E_WARNING, E_NOTICE, E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE và E_RECOVERABLE_ERROR)cho FireBug để hiển thị. Thêm dòng mã sau vào cuối file index.php
- // Error, Exception & Assertion Handling
- $firephp->registerErrorHandler($throwErrorExceptions=true);
- $firephp->registerExceptionHandler();
- $firephp->registerAssertionHandler( $convertAssertionErrorsToExceptions=true, $throwAssertionExceptions=false);
- try {
- throw new Exception('Test Exception');
- } catch(Exception $e) {
- $firephp->error("Object Oriented API : {$e}");
- FB::error("Procedural API : {$e}");
- }
Nhìn kết quả ở hình dưới:
Groups
Trong một vài trường hợp, có lẽ bạn sẽ cần đến Groups, nó dùng để gọp tất cả các Exception lại thành một và dễ quản lý. Copy đoạn mã sau và cho vào cuối của file index.php
- // Groups
- $firephp->group('Test Group');
- $firephp->log('Hello World');
- $firephp->log('Hello Ken Phan Blog');
- $firephp->groupEnd();
- $firephp->group('Collapsed and Colored Group',
- array(
- 'Collapsed' => true,
- 'Color' => '#FF00FF'
- )
- );
Kết quả:
Logging Messages
Có 4 loại methods cho việc hiển thị logging message.
- // Priority Styling
- $firephp->log('Plain Message'); // or FB::
- FB::log('Info Message'); // or $firephp->
- $firephp->warn('Warn Message'); // or FB::
- FB::error('Error Message'); // or $firephp->
Kết quả:
Table
FirePHP còn hổ trợ bạn sử dụng bảng nữa đó
thật là thú vị phải không !? dữ liệu của bạn sẽ được sắp sếp rất đẹp và rất tiện cho việc debug ứng dụng. Nếu bạn đang sử dụng fb() thì bạn cần phải dùng constant FirePHP::TABLE.
- // Table
- $table = array();
- $table[] = array('Col 1 Heading','Col 2 Heading');
- $table[] = array('Row 1 Col 1','Row 1 Col 2');
- $table[] = array('Row 2 Col 1','Row 2 Col 2');
- $table[] = array('Row 3 Col 1','Row 3 Col 2');
- $firephp->table('Table Label', $table); // or FB::
- fb($table, 'Table Label', FirePHP::TABLE);
Kết quả:
... còn tiếp
SỬ DỤNG XDEBUG VÀ NEATBEAN GỠ LỖI
Sữ dụng xDebug và Neatbean gỡ lỗi
Trong lập trình việc gỡ lỗi là việc không thể tránh khỏi, đối với các dự án nhỏ chúng ta có thể hình dung ra logic là tìm lỗi dễ dàng. Tuy nhiên, với các project lớn, hay các framework, CMS lớn để tìm lỗi không dễ đặc biệt là lỗi logic.
Để dễ dàng trong việc phát hiên các lỗi logic chúng ta sẽ dung chức năng debug của PHP kết hợp với IDE Netbean.
B1: Mở chức năng debug
- Để sữ dụng được chức năng debug bạn chọn gói ứng dụng nào có hổ trợ xDebug, cụ thể mình chọn wamp
B2: Cài đặt và cấu hình
- Cài Netbean và tạo một project mới
-
Click phải lên tên project chọ properties, chọn mục run configuration
Điền đầy đủ thông tin bao gồm đường dẫn thực thi, file chạy mặc định và các tham số nếu có.
B3: Tạo điểm ngừng(break point)
- Vào một file mà bạn chắc rằng khi thực thi code thì file này và dòng lệnh mà bạn chọn được gọi.
Click vào số thứ tự dòng để ra kết quả như hình là ok.
B3: Khởi động debug
- Nhắp vào biểu tượng trên Netbean
Sau khi debug được khỏi động, bạn hãy chạy liên kết mà có chứa breakpoint lựa chọn bên trên.
Nếu dòng bạn đặt breakpoint được thực thi nó sẽ có màu xanh và Apache sẽ dừng lại tại đó chờ bạn điều khiển.
- Bạn sẽ điều khiển Apache như sau:
F8: chạy qua dòng code tiếp theo, chạy qua hàm được gọi
F7: đi vào lệnh đang được gọi(ví dụ đi vào hàm đang được tô xanh)
F5: hủy lệnh debug tức thời để Apache chạy bình thường
- Trong khi chạy Neatbean sẽ ghi lại các biến, các đối tượng để chúng ta theo dõi, bật của sổ như sau(chọnVariables):
Các biến liệt kê bao gồm tên biến/ kiểu dữ liệu/ giá trị, các bạn có thể xem để biết mình sai chổ nào:
Để tắt debug các bạn nhấn
Chúc các bạn thành công.
Cám ơn bạn, đang tìm tài liệu về vấn đề này :)
Trả lờiXóadây loa