Debug code PHP với Xdebug và Sublime Text 3

Debug code là công việc hàng ngày mà chúng ta cần phải làm. Bất kể làm công việc nào các bạn cũng phải qua lần đầu tiên, có người có khả năng thì lần đầu tiên sẽ trơn tru nhưng phần đa là lần đầu tiên thường gặp nhiều khó khăn. Kể cả trong việc soạn code, lần đầu tiên các bạn viết sẽ gặp không ít khó khăn để cho code trở nên trơn tru. Bài viết dưới đây sẽ chia sẻ cho các bạn cách làm thế nào để có thể debug code php với Xdebug kết hợp với Sublime Text trở nên trơn tru.

Chuẩn bị

Đầu tiên để thực hiện các bạn cần tiến hành cài extension PHP Xdebug. Dưới đây là mô tả ngắn gọn cho hoạt động này mà các bạn hoàn toàn có thể tham khảo.

Các bạn cần đảm bảo Xdebug đang hoạt động tốt bằng thao tác kiểm tra phpinfo(). Tất nhiên các bạn cũng không thể quên Sublime Text. Các bạn nên sử dụng phiên bản mới nhất Sublime Text 3. Bởi lẽ nó có thể hoạt động tốt với Sublime Text 2.

Các bước tiến hành

Cấu hình Xdebug

Để cấu hình Xdebug các bạn cần thêm dòng vào ngay sau file php.ini, cách tốt nhất là các bạn thêm ngay vào file xdebug.ini.

Thông thường các bạn đang sử dụng địa chỉ local 127.0.0.1. Nhưng các bạn có thể sử dụng địa chỉ 10.0.2.2 nếu các bạn đang dùng vagrant.

Có thể trong nhiều trường hợp các bạn cần sử dụn đến Remote log khi xảy ra các vấn đề. Bởi lẽ tại đây các bạn hoàn toàn có thể tìm thấy những thông tin về các lỗi xảy ra.

Thao tác cuối trong phần cấu hình chính là khởi động lại webserver.

Cấu hình Sublime Text 3

Với Sublime Text các bạn có thể thực hiện debug code php nhanh chóng, đơn giản với các package. Ở trường hợp này các bạn sẽ thực hiện cài đặt package Xdebug. Các bạn cần đảm bảo chắc rằng package control đã được cài vào máy.

Sau khi package control đã được cài xong các bạn tiến hành bật Sublime Text 3. Thực hiện mở cửa sổ với câu lệnh Ctrl + Shift + P và tìm “install package”.

Các bạn sẽ tìm package “Xdebug client”

Thao tác cuối cùng trong phần cấu hình của Sublime Text 3 đó là phải cấu hình project trong Sublime. Để làm được điều này các bạn mở thư mục gốc của project, sau đó chọn menu project và di chuyển chọn “save projects as”. Các bạn nên lưu trữ file trong chính thư mục gốc của project. Bởi lẽ bạn có thể dễ dàng cấu hình và tìm kiếm hơn.

Mở file mà các bạn vừa tạo các bạn sẽ thấy chúng có dạng như sau:

 

Các bạn cần bổ sung thêm một vài dòng

Bằng quan sát các bạn hoàn toàn có thể thấy ở đây chỉ được thêm vào URL của ứng dụng web. Có thể các bạn có thể thiết lập cài đặt hơn cho Xdebug, nhưng với những gì ở trên hoàn toàn đủ cho việc bắt đầu. Hoặc có thể các bạn thiết lập URL trong chính cài đặt của Xdebug. Tuy nhiên với trường hợp này các bạn khó có thể làm việc trên nhiều project.

Khởi động phiên làm việc của Xdebug

Bây giờ các bạn hoàn toàn có thể cho việc bắt đầu phiên làm việc của Xdebug và kiểm tra xem mọi thứ cài đặt đã được chính xác chưa. Các bạn đi đến menu chọn Tools => Xdebug rồi chọn start debugging (launch browser). Sau các bước tiến hành trang web của bạn được mở ra và tham số ?XDEBUG_SESSION_START=sublime.xdebug được thêm vào cuối URL. Sau đó phiên làm việc của Xdebug sẽ được bắt đầu. Bên cạnh đó một số bảng phụ cũng sẽ xuất hiện sau khi các bạn cài đặt breakpoints.

Breakpoints

Các bạn cần cài đặt một breakpoints đầu tiên. Về cơ bản breakpoint là một cái cờ nơi mà ứng dụng của bạn sẽ tạm dừng khi khi di chuyển đến đây. Tại thời điểm này các bạn có thể thực hiện kiểm tra giá trị tất cả các biến để bạn biết rằng thực tế đang có những gì xảy ra.

Các bạn hoàn toàn có thể thêm một breakpoint bằng thao tác click chuột phải trên một dòng, ấn chọn Xdebug sau đó chọn add/remove breakpoint. Một điểm đánh dấu sẽ xuất hiện trên lề của dòng để chỉ rằng đã có một breakpoint được cài đặt.

Mở trình duyệt thêm một lần nữa để kiểm tra. Bạn có thể thấy nơi có breakpoint mà bạn cài đặt trang web sẽ ngừng tải. Tiến hành mở Sublime các bạn sẽ thấy rất nhiều thông tin xuất hiện trong bảng của Xdebug.

Những Xdebug stack và cả Xdebug context trông thật thú vị. Tại stack các bạn có thể thấy toàn bộ stacktrace mà bạn đã đi qua.

Trong phần context các bạn sẽ thấy tất cả các biến toàn cục và cả những biến mà bạn tự định nghĩa. Các bạn có thể click vào để kiểm tra bên trong các biến một cách cụ thể hơn. Dưới đây là một ví dụ về biến $_Server.

Các bạn nhìn vào phần mũi tên màu vàng để thấy được tại đây ứng dụng đang bị dừng lại.

Khi ứng dụng bị dừng lại các bạn có thể xem qua những biến được định nghĩa. Tuy nhiên với trường hợp mà các bạn xem xong và muốn xem tiếp thì các bạn cần làm gì bây giờ? Các bạn hãy nhấp chuột phải sau đó chọn Xdebug, ở đây các bạn có những lựa chọn sau:

  • Run tiếp tục chạy ứng dụng cho đến thời điểm dừng tiếp theo hoặc cho đến khi ứng dụng kết thúc.
  • Run to line chạy chính xác đến dòng mà bạn click vào
  • Step into nhảy đến hàm hiện tại và dừng lại
  • Step over nhảy qua hàm hiện tại và dừng lại
  • Step out nhảy qua hàm hiện tại và dừng lại ngay sau đó.
  • Stop dừng hoàn toàn việc sửa lỗi
  • Detach tương tự stop.

Việc dừng thì chắc hẳn các bạn đều có thể đã hiểu. Tuy nhiên với các hàm nhảy các bạn có thể sẽ bị nhầm lẫn. Do đó hãy xem một vài ví dụ sau để dễ hiểu hơn:

Các bạn hãy hình dung đơn giản là thêm một breakpoint vào dòng đầu tiên của hàm bar. Trên đó có comment breakpoint (//breakpoint).

Đối với step into trình debug sẽ nhảy vào chính hàm fooBar sau đó dừng lại ở chính dòng đầu tiên trong đó. Quan sát trình gỡ lỗi sẽ dừng ở dòng return array_values($arr);

Step over sẽ gọi hàm tuy nhiên sẽ không dừng lại ngay mà nó sẽ dừng lại ở dòng tiếp theo ngay sau khi các bạn gọi hàm. Do vậy ở Step over nó sẽ dừng ở return $arr;

Sau cùng với step out nó sẽ chạy qua toàn bộ hàm bar và quay về nơi đã gọi nó. Với trường hợp này nó sẽ nhảy hẳn ra ngoài đối tượng và trở về đối tượng gốc.

Nếu bạn vẫn tiếp tục run, ứng dụng sẽ chạy thêm cho đến khi nó debug xong hoặc breakpoint khác xuất hiện.

Kết luận

Bài viết trên đã hướng dẫn các bạn tích hợp Xdebug với Sublime và hiểu hơn về cách debug code php. Với hầu hết IDE dành cho ngôn ngữ lập trình PHP các bạn đều có thể tích hợp với Xdebug. Hy vọng với bài viết các bạn sẽ có thêm tư liệu về Debug code PHP với Xdebug và sublime text 3.