Fix bug without using brain with xdebug

Fix bug without using brain with xdebug
  1. Cài đặt xdebug trên ubuntu:
  • Sử dụng câu lệnh: sudo apt-get install php-xdebug để cài đặt xdebug tương ứng với bản php mới nhất.
  • Còn nếu bạn sử dụng bản thấp hơn như 7.4 cáo thể sử dụng câu lệnh sau: sudo apt-get install php7.4-xdebug.
  • Nếu các bạn dùng hệ điều hành khác có thể tham khảo ở link này.
  • Sau khi cài đặt thành công sẽ có file xdebug.so nằm ở thư mục /usr/lib/php/xxxxxxxx/ (xxxxxxxx: là thư mục chứa các bản cài đặt extension theo phiên bản php của bạn).

2. Cấu hình xdebug.ini:

  • Vào file xdebug.ini sudo nano /etc/php/7.x/mods-available/xdebug.ini và chỉnh sửa thành như sau:
[xdebug]
zend_extension=/usr/lib/php/xxxxxxxx/xdebug.so
xdebug.mode=debug
xdebug.start_with_request = yes
  • zend_extension:  là nơi chứa file xdebug.so
  • Và sau đó bạn khởi động lại các services:

sudo systemctl restart php7.0-fpm
sudo systemctl restart nginx # If you are using nginx server
sudo systemctl restart apache2 # If you are using apache server

3. Cài extension php debug cho vscode:

  • Install extension PHP Debug.
  • Tạo file launch.json

4. Cài đặt xdebug trên docker:

  • Tạo file cấu hình xdebug.ini trong thư mục docker:
zend_extension=xdebug
[xdebug]
xdebug.mode=develop,debug
xdebug.discover_client_host=1
xdebug.client_port = 9003
xdebug.start_with_request=yes
xdebug.log='/var/logs/xdebug/xdebug.log'
xdebug.connect_timeout_ms=200
  • Thêm 2 dòng vào file Dockerfile:
RUN pecl install xdebug-3.1.2 
ADD xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
  • Tạo file xdebug trong container docker chứa code, thêm 2 dòng sau vào volumes của app:
./xdebug:/var/logs/xdebug
./xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
  • Thêm dòng sau vào configurations của thư mục vscode:
"pathMappings": {
   "/var/www": "${workspaceRoot}"
}

+ /var/www: là thư mục trên server trong docker.

+ ${workspaceRoot}: thư mục mã nguồn

5. Cách sử dụng:

  • Để khởi động xdebug trong vscode ta ấn F5.
  • Click vào dòng code cần xem để tạo breakpoint.
  • Sau đó ta gửi request đến breakpoint để sử dụng xdebug.
  • Ấn F10 để đi qua từng dòng code.
  • VARIABLES sẽ hiện ra các biến hiện có của funtion và ta có thể xem rõ các giá trị ở đó
  • WATCH sẽ giúp chúng ta thực hiện các lệnh code bên ngoài funtion và xem các giá trị ta gán vào.
  • Video ví dụ cách dùng:

https://drive.google.com/file/d/1xi2VXHK78TExlpIQyV_2yPmM0xfkIvMo/view?usp=sharing

Tài liệu tham khảo: