Làm cách nào để sử dụng các điểm ngắt trong PhpStorm?

Vẫn đang sử dụng var_dump để gỡ lỗi mã PHP của bạn? . Mặc dù var_dump có thể thuận tiện, nhưng đó là một cách tiếp cận rất thẳng thừng. Trong bài viết này, tôi sẽ chỉ cho bạn cách thiết lập gỡ lỗi phù hợp với PhpStorm, Xdebug và PHPUnit, đồng thời cung cấp cho bạn trải nghiệm gỡ lỗi tinh vi, hiện đại

Gần đây, tôi đang phát triển một dự án phụ và đã phải tạo một số gói phụ thuộc để hỗ trợ dự án đó. Các gói phụ thuộc này thực hiện một số nhiệm vụ nhỏ hơn, những nhiệm vụ không thuộc về gói chính

Một ví dụ là một gói có tên là bộ lọc tiền tệ. Nhiệm vụ của nó là lọc một chuỗi tiền tệ định dạng châu Âu, chẳng hạn như -1.432.156,54 thành số nguyên tương đương của nó. Trong trường hợp này, nó sẽ là -143215654

Không phải là một yêu cầu phức tạp, bạn có thể nghĩ. Nhưng tôi càng cung cấp nhiều dữ liệu thử nghiệm cho mã, thì tôi càng tìm thấy nhiều trường hợp sử dụng cần được xử lý. Hãy xem các thử nghiệm của dự án để biết danh sách đầy đủ, nhưng đây là danh sách ngắn

  • 1. 00,00
  • -3500,00
  • -3. 500,01
  • -4. 501,2
  • 1. 887. 761. 234
  • 1. 887. 761. 234,01
  • 1. 887. 761. 234,2
  • 1887761234,2
  • 1887761234,21
  • 1887761234,2
  • 1887761234
  • 1234. 24

Trong giai đoạn đầu của quá trình phát triển, trong một số trường hợp, các thử nghiệm đã xác thực rằng các giá trị mong đợi đã được trả về. Tuy nhiên, ở những người khác, các giá trị mà tôi mong đợi được trả lại, không. Theo bản năng (sai), tôi bắt đầu sử dụng phương thức var_dump của PHP để thử xem giá trị được trả về là gì

Chà, nếu bạn đã từng thử var_dump một biến trong quá trình kiểm tra PHPUnit, thì bạn sẽ biết rằng PHPUnit không hài lòng với điều đó. Tôi không chỉ không thấy giá trị mà tôi muốn, thay vào đó tôi còn thấy một dấu vết ngăn xếp khó sử dụng

Vì vậy, một người đàn ông phải làm gì. Tôi cần biết những gì đã được trả lại, nhưng cách mà tôi đang cố gắng tìm ra nó không hiệu quả. Giải pháp là sử dụng gỡ lỗi từng bước trong PhpStorm

Nếu bạn không quen với gỡ lỗi từng bước, thì đó là nơi bạn, như tên của nó ngụ ý, lướt qua mã của bạn, từng dòng một

Thiết lập gỡ lỗi từng bước trong PHP

Rất vui, để thiết lập nó trong PHP, bạn không cần nhiều. Tất cả những gì bạn cần là ba điều

Bất cứ khi nào tôi viết mã PHP, có thể nói rằng tôi sử dụng PhpStorm một cách hợp lý. Vì vậy, đó là lý do tại sao, trong bài viết này, tôi sẽ chỉ cho bạn cách tích hợp Xdebug, PHPUnit và PhpStorm

Lưu ý nhỏ

Bài viết này không đề cập đến việc gỡ lỗi các ứng dụng dựa trên web bằng PhpStorm, nhưng đề cập đến các thư viện mã nhỏ hơn. Đôi khi, việc thiết lập gỡ lỗi (từ xa) cho các ứng dụng dựa trên web có thể là một công việc khó khăn và phức tạp, tùy thuộc vào cấu trúc môi trường phát triển của bạn

Những gì bạn cần

Bạn sẽ không cần nhiều thứ để làm theo hướng dẫn này, chỉ cần những điều sau đây

  • Bản phát hành gần đây của PhpStorm (Tôi đang sử dụng phiên bản 2019. 2. 3)
  • Bản cài đặt PHP (Tôi đang sử dụng 7. 3. 10)
  • Trình quản lý gói (chẳng hạn như Apt trên Linux, Homebrew trên macOS hoặc Chocolatey trên Windows)
  • Khoảng 10 phút thời gian của bạn

Làm cách nào để sử dụng các điểm ngắt trong PhpStorm?
Mezzio Essentials hướng dẫn bạn các nguyên tắc cơ bản của khung Mezzio của PHP — các nguyên tắc cơ bản mà bạn cần — để bắt đầu xây dựng được trả tiền cho các ứng dụng với khung Mezzio ngay lập tức. Đó là một cách tiếp cận thực tế, thực hành, chỉ cho bạn biết vừa đủ về các nguyên tắc và khái niệm cơ bản trước khi hướng dẫn bạn qua quy trình tạo ứng dụng. Tìm hiểu thêm

Cài đặt và cấu hình Xdebug

Điều đầu tiên chúng ta cần làm là thêm hỗ trợ Xdebug vào tệp nhị phân PHP của chúng ta. Để làm điều đó, tôi đặc biệt khuyến khích bạn sử dụng trình quản lý gói trên bản phân phối Linux của bạn hoặc trình quản lý gói cho hệ điều hành của bạn, chẳng hạn như Homebrew trên macOS

Đối với các ví dụ trong bài viết này, tôi sẽ giả định rằng bạn đang chạy bản phân phối Linux dựa trên Debian, chẳng hạn như Debian, Ubuntu hoặc Linux Mint. Tuy nhiên, vui lòng điều chỉnh chúng cho phù hợp với trình quản lý gói mà bạn chọn

Để cài đặt Xdebug, hãy chạy lệnh sau

sudo apt-get install -y php-xdebug

Sau đó, sau khi Xdebug được cài đặt, bạn cần đảm bảo rằng nó đã được bật và được định cấu hình đúng cách. Trình quản lý gói rất có thể sẽ kích hoạt nó, nhưng để chắc chắn hãy chạy lệnh sau

php -m  | grep -i xdebug

Nếu bạn thấy “Xdebug” ở đầu ra, thì nó đã được cài đặt và kích hoạt. Bây giờ chúng ta cần cấu hình nó đúng cách. Để làm điều đó, chúng tôi cần đảm bảo rằng remote_enable được bật

Trước tiên, chúng ta cần tìm tệp cấu hình có liên quan. Chúng ta có thể tìm thấy nó bằng cách chạy lệnh sau

php --ini | grep xdebug

Điều này sẽ xuất một cái gì đó như /etc/php/7.3/cli/conf.d/20-xdebug.ini ra bàn điều khiển. Mở tệp đó trong trình chỉnh sửa yêu thích của bạn và thêm dòng sau

xdebug.remote_enable=1

Lưu tệp và sau đó kiểm tra xem cài đặt có hiệu lực hay không bằng cách chạy lệnh sau

php --ri xdebug | grep remote_enable

Bạn sẽ thấy xdebug.remote_enable => On => On được in ra bảng điều khiển nếu cài đặt có hiệu lực

Định cấu hình Cài đặt PHP của PhpStorm

Bây giờ Xdebug đã được cài đặt và định cấu hình, chúng ta cần định cấu hình PhpStorm. Để làm điều đó, trong cài đặt của PhpStorm, bên dưới “Ngôn ngữ & Khung -> PHP”, nhấp vào nút Thêm, bên cạnh danh sách thả xuống Trình thông dịch CLI, bạn có thể xem ví dụ trong ảnh chụp màn hình bên dưới

Làm cách nào để sử dụng các điểm ngắt trong PhpStorm?

Điều đó sẽ cho bạn thấy danh sách các trình thông dịch PHP được định cấu hình. Chọn phiên bản PHP của bạn ở cột bên trái. Tiếp theo, đảm bảo rằng “Xdebug” được viết bên cạnh “Debugger”, như trong ảnh chụp màn hình bên dưới

Làm cách nào để sử dụng các điểm ngắt trong PhpStorm?

Nếu đúng như vậy, thì PhpStorm đang hoạt động với tệp nhị phân PHP có hỗ trợ Xdebug

Định cấu hình Hỗ trợ PHPUnit của PhpStorm

Bây giờ, chúng ta cần đảm bảo rằng PhpStorm đã thiết lập tích hợp PHPUnit chính xác. Để làm điều đó, hãy mở hộp thoại cài đặt của PhpStorm và lọc theo “phpunit” hoặc điều hướng đến “Languages ​​& Frameworks -> PHP -> Test Frameworks”

Nếu không có cấu hình nào được liệt kê ở cột giữa, hãy nhấp vào nút dấu cộng để thêm cấu hình. Trong cửa sổ bật lên xuất hiện, chọn “PHPUnit Local”. Tiếp theo, chúng ta cần định cấu hình cách PHPUnit khả dụng trên hệ thống của bạn

Có ba sự lựa chọn

  • Sử dụng trình tải tự động Composer
  • Đường dẫn đến phpunit. phar
  • Tải từ đường dẫn bao gồm (PEAR)

Tôi thường bao gồm PHPUnit trên cơ sở từng dự án thông qua Trình soạn thảo, như một yêu cầu phát triển. Vì vậy, đó là tùy chọn mà tôi sẽ thực hiện trong ví dụ này. Do đó, tôi sẽ chọn “Sử dụng trình tải tự động Trình soạn thảo”

Sau khi thực hiện việc đó, hãy nhấp vào thư mục ở phía ngoài cùng bên phải của “Đường dẫn đến tập lệnh. ”. Trong hộp thoại trình duyệt tệp xuất hiện, tìm và chọn Trình tải tự động của Trình soạn thảo (vendor/autoload. php) trong dự án của bạn. Sau khi làm như vậy, nếu bạn nhấp vào biểu tượng tải lại, bên cạnh đường dẫn trình tải tự động, bạn sẽ thấy thông báo xác nhận màu xanh lá cây, cho bạn biết rằng thông tin phiên bản PHPUnit đã được cập nhật thành công. Ngoài ra, bạn sẽ thấy phiên bản PHPUnit được in bên dưới đường dẫn, bên cạnh “Phiên bản PHPUnit”

Khi đã xong, hãy nhấp vào “OK” để đóng cửa sổ cài đặt

Đặt một hoặc nhiều điểm ngắt trong dự án của bạn

Bây giờ chúng tôi đã hoàn thành tất cả các thiết lập và cấu hình cần thiết, đã đến lúc đặt một hoặc nhiều điểm dừng trong mã của chúng tôi và bắt đầu trình gỡ lỗi. Trong ảnh chụp màn hình bên dưới, bạn có thể thấy rằng tôi đã đặt điểm dừng trên một dòng tùy ý trong một trong các tệp nguồn của dự án của mình

Làm cách nào để sử dụng các điểm ngắt trong PhpStorm?

Để làm điều đó trong dự án của bạn, hãy nhấp vào tệp máng xối, trên dòng mà bạn muốn đặt điểm dừng. Nếu bạn nhấp vào khu vực bên phải, một biểu tượng màu đỏ sẽ xuất hiện, cho biết bạn đã đặt điểm dừng và dòng này cũng sẽ được đánh dấu màu đỏ (cho phép chủ đề của bạn). Để xóa nó, hãy nhấp lại vào vị trí đó

Bắt đầu gỡ lỗi từng bước

Bây giờ, bạn đã sẵn sàng bắt đầu trình gỡ lỗi từng bước. Có nhiều cách để làm điều này;

  • Nhấp vào mũi tên bên cạnh tên của bài kiểm tra mà bạn muốn chạy và nhấp vào tùy chọn thứ hai, bắt đầu bằng “Gỡ lỗi”
  • Nhấp chuột phải vào tệp thử nghiệm mong muốn và nhấp vào tùy chọn bắt đầu bằng “Gỡ lỗi” (hầu hết trong danh sách)
  • Mở bảng Gỡ lỗi và nhấp vào nút gỡ lỗi

Chọn cách bạn thích và khởi chạy trình gỡ lỗi

Tùy thuộc vào tốc độ của máy phát triển của bạn, trình gỡ lỗi sẽ dừng tại điểm ngắt và liệt kê đường dẫn thực thi đến dòng đó trong mã của bạn trong cửa sổ Khung của bảng gỡ lỗi và liệt kê một hoặc nhiều biến trong cửa sổ Biến. Trong ví dụ bên dưới, bạn có thể thấy rằng tôi có bảy biến được liệt kê trong cửa sổ Biến

Làm cách nào để sử dụng các điểm ngắt trong PhpStorm?

Cụ thể, bạn có thể thấy giá trị của biến được truyền cho phương thức mà tôi đang gỡ lỗi

php -m  | grep -i xdebug
0, giá trị mà nó đang được so sánh với
php -m  | grep -i xdebug
1. Tuy nhiên, cái mà nó không có là giá trị trả về của hàm đó. Để thêm điều đó, tôi sẽ chọn chức năng gọi, nhấp chuột phải và chọn “Thêm vào đồng hồ”. Sau đó thêm lời gọi hàm vào cửa sổ Biến và hiển thị giá trị mà nó sẽ trả về

Từ đây, một số tùy chọn khác có sẵn. đó là

Hiển thị điểm thực thi Điều hướng bạn đến đoạn mã hiện đang thực thi. Step Over Thực hiện dòng tiếp theo, chuyển sang dòng sau và tạm dừng. Step IntoNếu dòng tiếp theo của mã là lệnh gọi hàm, mã sẽ tạm dừng ở dòng đầu tiên của hàm. Step OutĐiều này thực thi phần còn lại của chức năng hiện tại và đưa bạn trở lại trình gọi và tạm dừng. Run to CursorĐiều này sẽ thực thi tất cả mã giữa điểm dừng hiện tại và nơi con trỏ đã được đặt. Đánh giá biểu thứcĐiều này mở ra một hộp thoại cho phép bạn đánh giá một biểu thức tùy chỉnh, dựa trên trạng thái mã hiện tại. Force Step OverĐiều này cho phép bạn nhảy qua lệnh gọi phương thức, bỏ qua các điểm dừng. Force Run to CursorĐiều này cho phép bạn chuyển đến vị trí con trỏ trong khi bỏ qua các điểm dừng hiện có trên đường đi

Tóm lại là

Và đó là cách thiết lập gỡ lỗi PHP với PhpStorm, Xdebug và PHPUnit. Chắc chắn, có một số bước liên quan, nhưng chúng ít nhiều đơn giản và hợp lý.

Thứ hai, họ không nên mất nhiều thời gian để hoàn thành, có thể là 5 - 10 phút. Ngoài ra, khi hoàn thành, chúng sẽ giúp biết chính xác mã của bạn đang làm gì vào bất kỳ thời điểm nào một cách hiệu quả, cho dù bạn đang thực thi mã trực tiếp hay kiểm tra mã bằng các bài kiểm tra đơn vị dựa trên PHPUnit

Hơn nữa, bạn có thể ngừng sử dụng cái búa lớn là

php -m  | grep -i xdebug
2 và tránh xả rác mã của mình bằng các câu lệnh mà sau này bạn phải xóa


Bạn cũng có thể quan tâm đến


Muốn có thêm hướng dẫn như thế này?

Nếu vậy, hãy nhập địa chỉ email của bạn vào trường bên dưới và nhấp vào đăng ký

Bạn có thể hủy đăng ký bất kỳ lúc nào bằng cách nhấp vào liên kết ở cuối email bạn sẽ nhận được. Đây là chính sách bảo mật của tôi, nếu bạn muốn biết thêm. Tôi sử dụng Mailchimp để gửi email. Bạn có thể tìm hiểu thêm về thực tiễn bảo mật của họ tại đây

Làm cách nào để Gỡ lỗi bằng PhpStorm?

Bắt đầu nhanh . Trên thanh công cụ PhpStorm, chuyển đổi . để bắt đầu lắng nghe các kết nối gỡ lỗi PHP sắp tới hoặc chọn Chạy. Bắt đầu nghe các kết nối gỡ lỗi PHP từ menu chính . Đặt điểm dừng trong mã của bạn.

Làm cách nào để đặt điểm ngắt trong PHP?

Để đặt điểm ngắt, đặt con trỏ ở đầu dòng và nhấn Ctrl-F8/⌘-F8 hoặc chọn Gỡ lỗi > Chuyển đổi điểm ngắt dòng. Switch to the Local Variables window. The window shows all the variables that have been initialized within the current function, their types, and values.

Làm cách nào để bật Xdebug trong PHP?

Định cấu hình Xdebug .
Chọn đúng tệp nhị phân Xdebug. Chọn phiên bản tùy thuộc vào phiên bản PHP của bạn. .
Sao chép tệp nhị phân Xdebug vào Thư mục tiện ích mở rộng PHP của bạn. Thư mục tiện ích mở rộng PHP thường nằm trong thời gian chạy PHP của bạn, trong thư mục con ext. .
Cập nhật cấu hình PHP. Chỉnh sửa tệp cấu hình PHP. .
xác minh cài đặt