Việc gỡ lỗi mã PHP trong mã VS cho phép kiểm tra chương trình PHP, kiểm tra các biến thực tế, dấu vết ngăn xếp, ngoại lệ, phá vỡ và bước qua mã, gỡ lỗi các bài kiểm tra PHPUNIT, v.v.
Yêu cầu
Để gỡ lỗi chương trình PHP, bạn cần PHP [được cài đặt cục bộ hoặc trên máy chủ của bạn] cùng với tiện ích mở rộng XDebug.
- PHP> = 5.6
- Mở rộng xdebug. Thực hiện theo các bước trên cài đặt xdebug.org.
Cài đặt PHP cục bộ
Trong trường hợp có nhiều cài đặt PHP hơn trên hệ thống, xem chọn phiên bản PHP và chọn đúng.
Để xác minh PHP và XDebug của bạn được cài đặt chính xác:
- Mở tệp
.php
trong mã vs - Mở chế độ xem
OUTPUT
, tabPHP
.
Nếu PHP với XDebug được cài đặt chính xác, bạn sẽ thấy
Found PHP, version x.y.z, Xdebug: x.y.z.
php.ini
Cấu hình
XDebug cần được đặt trong tệp php.ini
tương ứng với cài đặt PHP của bạn.
- Trên Windows, nó nằm bên cạnh
1 của bạn. it is located next to your; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
1.; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
- Trên Linux/Mac, thường có một tệp
2 riêng biệt [thường là một cái gì đó như; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
3].Linux/Mac, there is usually a separate; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
2 file [usually something like; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
3].; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
Chỉnh sửa tệp
; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
4 và đảm bảo có các chỉ thị sau [lưu ý, các chỉ thị khác nhau đối với các phiên bản XDebug ; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
5 và ; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
6]:; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
; Xdebug 2
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.remote_mode = req
Cài đặt máy chủ PHP
Điều này áp dụng cho tình huống khi PHP không chạy trên hệ thống cục bộ của bạn nhưng nó nằm trên đám mây, máy chủ web, Docker, XAMPP, v.v.Cloud, Web Host, Docker, Xampp, etc.
Trong trường hợp
; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
7 không chạy trên hệ thống cục bộ của bạn, hãy tham khảo ý kiến cài đặt Php+XDebug với máy chủ máy chủ cụ thể.Sau đó, bạn có thể tận dụng proxy DBGP để cho phép nhiều người dùng gỡ lỗi cùng một trang web một cách an toàn.
Ra mắt gỡ lỗi trong VSCODE
Khởi chạy gỡ lỗi trong Code Visual Studio để chạy chương trình và gỡ lỗi hoặc nghe các kết nối XDebug và gỡ lỗi đến. Gỡ lỗi PHP có thể được bắt đầu theo nhiều cách, có hoặc không có không gian làm việc mã VS, có hoặc không có cấu hình
; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
8.Với ; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
8
; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
Tệp
0 là một tệp cấu hình trong thư mục mã vs hoặc không gian làm việc của bạn.; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
- Mở thư mục hoặc mở không gian làm việc trong mã vs. Điều này cho phép chỉ định cấu hình khởi chạy gỡ lỗi chi tiết hơn. or Open Workspace in VS Code. This allows for specifying more detailed debug launch configurations.
- Điều hướng đến chế độ xem
1 và nhấp vào; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
2 hoặc thiết bị cấu hình:; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
- Xem Launch.json để khởi tạo và mô tả hồ sơ khởi chạy PHP.
Không ; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
8, chỉ cần gỡ lỗi
; Xdebug 3
zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
Gỡ lỗi có thể được bắt đầu mà không cần cấu hình. Điều này được khuyến nghị nếu bạn chỉ cần gắn vào một máy chủ web hiện có [với XDebug được cấu hình] hoặc để nhanh chóng chạy và gỡ lỗi một tập lệnh PHP.
- Mở tệp .________ 17 trong mã VS [
5]. in VS Code [; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
5].; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
- Nhấn
6 hoặc bảng lệnh mở [; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
7] và chọn một trong những điều sau:; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
6 or Open Command Palette [; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
7] and choose one of the following:; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
8 bắt đầu gỡ lỗi và chờ kết nối XDebug đến.; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
9 chạy và gỡ lỗi tài liệu PHP hiện đã mở dưới dạng chương trình PHP điều khiển.; Xdebug 2 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_mode = req
0 Bắt đầu máy chủ phát triển PHP trong thư mục đã mở của bạn, kiểm tra các khả năng gỡ lỗi và bắt đầu nghe các kết nối XDebug.php --version
Đặc trưng
Các tính năng gỡ lỗi như sau:
- Bước theo dòng, bước vào, bước ra.
- Đặt các điểm dừng, điểm dừng có điều kiện, phá vỡ số lần truy cập.
- Ghi nhật ký điểm đột phá vào 'Bảng điều khiển gỡ lỗi'.
- Phá vỡ các trường hợp ngoại lệ, cảnh báo và lỗi.
- Chỉ định các tệp không phải người dùng [ngoại lệ sẽ không phá vỡ gỡ lỗi, bước qua].
- Mẹo công cụ xem.
- Liệt kê người dân địa phương và superglobals.
- Chỉnh sửa biến hoặc giá trị thuộc tính, xử lý các giá trị chuỗi dài một cách hiệu quả.
- Mảng dài xem hiệu quả.
- Debug Watch mở rộng các đối tượng và mảng.
- Đánh giá mã trong 'Bảng điều khiển gỡ lỗi'.
- Gỡ lỗi hồ sơ ra mắt.
- Máy chủ phát triển web tích hợp.
- Gỡ lỗi các trường hợp thử nghiệm 'đơn vị PHP'.
Gỡ lỗi trang trí
Khi bước qua mã, trình chỉnh sửa sẽ hiển thị các giá trị của các biến và biểu thức tương ứng với câu lệnh hiện tại. Các giá trị cũng được hiển thị cho các phạm vi kèm theo như các biến điều khiển vòng, biểu thức chuyển đổi và tham số chức năng.
Tính năng này có thể được bật hoặc tắt bằng cách sử dụng Cài đặt mã VS
php --version
1.Bắt đầu gỡ lỗi và dừng lại khi nhập
Mở bảng màu và chạy
php --version
2 [còn gọi là bước vào]. Lệnh khởi chạy gỡ lỗi và phá vỡ câu lệnh đầu tiên.command palette and run php --version
2 [aka Step Into]. The command launches debugging and breaks on the first statement. Xử lý sự cố
Đây là những bước sẽ giúp chẩn đoán và giải quyết các vấn đề phổ biến với việc gỡ lỗi PHP:
Chạy lệnh sau sẽ hiển thị không có cảnh báo và thông báo XDebug:no warnings, and an Xdebug notice:
php --version
PHP 8.0.3 [cli] Copyright [c] The PHP Group Zend Engine v4.0.3, Copyright [c] Zend Technologies with Xdebug v3.0.4, Copyright [c] 2002-2021, by Derick Rethans
Số cổng được chỉ định trong cấu hình XDebug
4 phải là; Xdebug 3 zend_extension = "" ; "...\xdebug.dll" or ".../xdebug.so" xdebug.mode = debug xdebug.client_host = 127.0.0.1 xdebug.client_port = 9003 xdebug.start_with_request = trigger
4 hoặcphp --version
5 hoặc nó phải khớp vớiphp --version
6 được chỉ định trong hồ sơ khởi chạy.php --version
Tường lửa phải được thiết lập đúng để cho phép liên lạc thông qua cổng XDebug.
Nối tham số truy vấn sau khi mở trang web PHP gỡ lỗi:
?XDEBUG_SESSION_START=1
Ví dụ:
7php --version
Trong trường hợp mã VS đứng sau proxy, hãy xem //code.visualstudio.com/docs/setup/network để cài đặt bổ sung.
Xem thêm
- Xdebug.org
- Cài đặt XDebug trên Mac
- Khởi chạy cấu hình
- Cài đặt mạng mã VS [Proxy]