PHP XDebug hoạt động như thế nào?
Các bước đầu tiên để bắt đầu gỡ lỗi với Xdebug Trong công thức nàyTrong công thức phòng ngừa và tìm kiếm lỗi cơ bản của chúng tôi, chúng tôi đã giới thiệu một số hàm như 0, 1 hoặc 2 để giúp gỡ lỗi các biến của bạn trong PHP. Mặc dù các hàm này thường hữu ích để xem nhanh đầu ra của các biến của bạn, nhưng chúng không hữu ích để đánh giá các biến này trong thời gian chạy, phân tích dấu vết ngăn xếp hoặc đặt điểm dừng Show Đây là lúc Xdebug xuất hiện, một tiện ích mở rộng PHP cung cấp khả năng gỡ lỗi và định hình, cuối cùng sẽ tăng tốc quá trình phát triển của bạn, giúp bạn viết mã tốt hơn và tạo điều kiện tái cấu trúc. Với Xdebug, bạn có thể ngắt quá trình thực thi mã tại bất kỳ thời điểm nào, thực hiện theo từng bước thực thi mã ngay từ đầu và kiểm tra tất cả các biến trong một yêu cầu Trong công thức này, chúng tôi sẽ tập trung vào Bước gỡ lỗi với Xdebug
Công thức này đã được thử nghiệm trên Mac OS Big Sur và Ubuntu 20. 04 với Laravel Valet và Valet Linux, tương ứng Trong một số môi trường phát triển như MAMP Pro, Xdebug đi kèm theo gói nên bạn không cần phải cài đặt riêng. Xem phần cuối của công thức này Trước tiên hãy kiểm tra xem Xdebug đã được cài đặt trên hệ thống của bạn chưa. Bạn có thể kiểm tra điều này bằng cách đưa câu lệnh 3 vào mẫu Kirby hoặc vào một tệp riêng và tìm phần 4 hoặc mở một thiết bị đầu cuối và nhập
trên dòng lệnh. Nếu Xdebug được cài đặt, lệnh này sẽ xuất ra một cái gì đó giống như
Bạn có thể tìm hướng dẫn cài đặt cho nền tảng của mình trong tài liệu chính thức của Xdebug Ngoài ra còn có một trình hướng dẫn nơi bạn có thể nhập đầu ra của 3 để nhận hướng dẫn xây dựng Xdebug từ nguồn cho môi trường của bạnKhi Xdebug được cài đặt, chúng tôi phải thiết lập một số cài đặt cấu hình Bước đầu tiên để định cấu hình Xdebug là tìm tệp 6 cho phiên bản PHP hiện tại của bạn. Một lần nữa, ở đây, bạn có thể tìm thấy đường dẫn đến tất cả các tệp đã sử dụng qua 3 hoặc qua CLIVới
bạn nhận được một danh sách tất cả các tệp 6 được sử dụng. Đôi khi, chỉ có một tệp 6, đôi khi có một tệp cho mỗi tiện ích mở rộng được tảiVới 3, bạn tìm thấy thông tin ở đầu kết quả trong các trường
Nếu bạn tìm thấy tệp 6 cụ thể cho Xdebug, bạn sẽ làm việc với tệp này, nếu không, hãy sử dụng tệp 6 chính. Nếu một thư mục được liệt kê trong "Quét thư mục này để biết thêm. ini", bạn cũng có thể tự tạo một tệp cho Xdebug để giữ cho 3 chính của bạn sạch sẽKiểm tra xem tệp bạn đang làm việc đã chứa cấu hình cho tiện ích mở rộng Xdebug chưa (trong môi trường của tôi, dòng này được thêm tự động khi tôi cài đặt Xdebug)
Nếu không, hãy thêm dòng này ngay bây giờ và khởi động lại máy chủ của bạn. Xác minh rằng Xdebug đang chạy đúng cách bằng cách kiểm tra lại với 3 hoặc 5 như đã giải thích ở trênBây giờ chúng tôi phải thêm một số cài đặt cấu hình khác. Thêm các cài đặt sau vào cùng một tệp 6
Lưu ý rằng 9003 là cổng mặc định. Nếu cổng này được sử dụng bởi một dịch vụ khác trên hệ thống của bạn, hãy thay đổi nó thành cổng không sử dụng Sau khi thêm các cài đặt này, hãy khởi động lại máy chủ web của bạn Bạn có thể tìm thấy mô tả cho tất cả cài đặt cấu hình trong tài liệu Xdebug Từ Xdebug 2 đến Xdebug 3, cách đặt tên của cài đặt cấu hình đã thay đổi. Các cài đặt trên là cài đặt Xdebug cho Xdebug 3. x. Nếu bạn đang chạy Xdebug 2. x, bạn phải cập nhật hoặc sử dụng Xdebug 2 tương đương. cài đặt x
Trong công thức này, chúng tôi giả định rằng mã kiểm tra của bạn và Xdebug chạy trên cùng một máy chủ Có nhiều cách để cho Xdebug biết cách kết nối với trình gỡ lỗi từ xa như được mô tả trong tài liệu Xdebug, nhưng chúng tôi sử dụng phương pháp 7 được đề xuất bởi plugin mà chúng tôi sẽ cài đặt trong bước tiếp theoĐể làm cho Xdebug hoạt động với Mã VS, chúng ta cần cài đặt tiện ích mở rộng Gỡ lỗi PHP của Felix Becker. Vì chúng tôi đã cài đặt Xdebug và định cấu hình cài đặt 6 bắt buộc ở trên, nên không cần cấu hình thêm vào thời điểm nàyKhi điều này được thực hiện, chúng tôi đã sẵn sàng để bắt đầu phiên gỡ lỗi đầu tiên của mình Bây giờ cho phần thú vị. Tải xuống và mở Kirby Starterkit trong cửa sổ Mã VS mới Để hiển thị Chế độ xem Chạy, nhấp vào biểu tượng 9 trong Thanh Hoạt động Mã VS ở phía bên trái của Mã VS hoặc nhấn CMD-SHIFT-D (Mac)/CTRL-SHIFT-D (Linux/Windows). Trong dạng xem Chạy, nhấp vào 0 rồi chọn PHP từ trình đơn thả xuống môi trườngTệp 1 mới với cài đặt mặc định được tạo trong thư mục dự ánBây giờ chúng tôi phải thay đổi cài đặt cổng cho cả hai cấu hình trong tệp này thành những gì chúng tôi đã nhập trong tệp 3. Vì tôi bị mắc kẹt với cổng mặc định, đây là cổng 9003. Vì cấu hình thứ hai "Khởi chạy tập lệnh hiện đang mở" không phù hợp với mục đích của công thức này nên tôi đã không sao chép nó ở đâyphóng. json
Để biết chi tiết về cài đặt 1 có sẵn, hãy xem tài liệu Gỡ lỗi PHPĐể thêm điểm dừng, hãy nhấp vào rãnh bên trái của mã Mở bộ điều khiển 4 và đặt ba điểm dừng trên 5 và hai định nghĩa biến 6. Một chấm đỏ sẽ đánh dấu từng điểm dừngKhi PHP thực thi một dòng có điểm dừng trên đó, Xdebug sẽ can thiệp và tạm dừng thực thi để bạn có được thông tin chi tiết có giá trị về tất cả những gì đang xảy ra trong quá trình thực thi Bây giờ hãy mở lại bảng gỡ lỗi và nhấp vào hình tam giác nhỏ màu xanh lục để bắt đầu nghe Xdebug. Bạn sẽ nhận thấy thanh công cụ gỡ lỗi mới này ở đầu cửa sổ trình soạn thảo Chúng tôi sẽ giải thích các nút khác nhau trong thanh công cụ này bên dưới Tiếp theo, mở trang 7 của Starterkit trong trình duyệt của bạn. Nếu mọi việc suôn sẻ, bạn sẽ được chuyển trở lại trình chỉnh sửa Mã VS, với bảng gỡ lỗi trống rỗng trước đây hiện chứa đầy thông tinTrong bước đầu tiên này, biến 6 và 5 vẫn chưa được khởi tạoNếu bây giờ chúng ta nhấp vào 0 trên thanh công cụ gỡ lỗi (hoặc nhấn F10), chúng ta có thể thấy nội dung trong bảng gỡ lỗi thay đổi như thế nào. Bây giờ biến 5 không còn được khởi tạo nữa mà thay đổi thành một chuỗi rỗngNếu chúng ta sử dụng lại 0, bây giờ chúng ta sẽ thấy biến 6 đã thay đổi như thế nàoBây giờ chúng ta có thể kiểm tra biến này một cách chi tiết. Chúng tôi biết rằng biến chứa một đối tượng kiểu 4, mảng dữ liệu chứa các trang con và nhiều hơn nữaVới trình lắng nghe gỡ lỗi vẫn đang hoạt động, hãy quay lại trình duyệt và thêm một thẻ vào thanh địa chỉ, e. g 5. Bây giờ hãy tải lại trang trong trình duyệt và quay lại trình chỉnh sửaLưu ý rằng sau 0 đầu tiên, biến 5 hiện chứa chuỗi 8. Bước lại và biến 6 sẽ vẫn giống như trước đâyKhi bước thứ ba kết thúc, chúng ta sẽ đạt được câu lệnh if và một bước nữa, chúng ta sẽ nhận thấy rằng biến 6 hiện đã thay đổi. Mảng 1 bên trong biến hiện chỉ có một mục duy nhất, trong khi nó có 6 mục trước khi quá trình lọc diễn raThoát khỏi chế độ gỡ lỗi bằng cách nhấp vào 2 trên thanh công cụ gỡ lỗi và xóa tất cả các điểm dừngCho đến thời điểm này, chúng tôi chưa gặp phải bất kỳ lỗi nào. Hãy thay đổi điều đó bằng cách cố ý thay đổi mã của chúng ta để làm cho mã có khả năng gặp lỗi và xem điều gì sẽ xảy ra Chúng tôi thực hiện các thay đổi sau trong Starterkit
Chúng ta làm gì ở đây? Bây giờ hãy đặt một điểm dừng trên dòng
Chuyển sang chế độ gỡ lỗi lần nữa và tải lại trang 7 trong trình duyệt (không có tham số thẻ)Nếu chúng ta bước qua điểm dừng lần đầu tiên, tất cả đều ổn. Bây giờ hãy nhấn nút 0 cho đến khi bạn thấy lỗi xuất hiện trong tab Biến (điều này sẽ xảy ra trong lần lặp tiếp theo của vòng lặp foreach)Lần tới khi chúng tôi nhấn điểm ngắt, chúng tôi sẽ nhận được thông báo lỗi sau
Điều đó có nghĩa là gì? Đây thực sự là một lỗi điển hình xảy ra khi chúng ta gọi một phương thức yêu cầu tồn tại một đối tượng của một lớp nhất định. Tuy nhiên, khi - như trong trường hợp này - trường trống hoặc tham chiếu tệp trong trường không còn tồn tại, thì không có đối tượng nào mà chúng ta có thể gọi phương thức 7Với những bước đầu tiên này, giờ đây bạn đã thiết lập và chạy một môi trường Xdebug đang hoạt động, đồng thời có thể tự mình bắt đầu mạo hiểm hơn nữa Tuy nhiên, trước khi kết thúc, chúng ta hãy xem sơ qua các khu vực khác trong bảng gỡ lỗi Trong tab 2, bạn sẽ thấy lịch sử tương tác của chuỗi các phương thức đã được thực hiện cho đến điểm dừng hiện tại hoặc điểm thực thi hiện tạiTrong tab Điểm ngắt, bạn có thể đặt mức lỗi mà Xdebug sẽ ghi lại (Cảnh báo, Lỗi, v.v. ), tạm thời vô hiệu hóa hoặc xóa tất cả các điểm ngắt cùng một lúc hoặc vô hiệu hóa, xóa hoặc thêm các điểm ngắt Khi ở chế độ gỡ lỗi, bạn sẽ nhận được thanh công cụ gỡ lỗi để kiểm soát việc thực thi mã
Nếu bạn sử dụng MAMP Pro, điểm khác biệt duy nhất so với các bước trên là bạn bật Xdebug trong Cài đặt PHP, sau đó thêm cài đặt cấu hình trong tệp 6 cho phiên bản PHP đã chọn, bạn cũng có thể truy cập phiên bản này thông qua cài đặtTrong công thức này, chúng tôi không thể bao gồm tất cả các hệ điều hành, môi trường phát triển hoặc IDE. Vui lòng sử dụng công cụ tìm kiếm để tìm các bài viết cập nhật, có liên quan cho thiết lập cụ thể của bạn hoặc đăng câu hỏi của bạn lên diễn đàn của chúng tôi
Tác giả
Bạn đã tìm thấy một lỗi? . Hãy chắc chắn kiểm tra styleguide của chúng tôi → Xdebug hoạt động như thế nào?XDebug hoạt động qua giao thức yêu cầu máy cục bộ của bạn lắng nghe các kết nối đến từ máy chủ nơi đặt ứng dụng mà bạn đang gỡ lỗi . Bạn có thể đã sử dụng các công cụ sửa lỗi chỉ cần kết nối với máy chủ từ xa hoặc quy trình của ứng dụng của bạn.
Việc sử dụng Xdebug trong PHP là gì?Xdebug là một tiện ích mở rộng dành cho PHP và cung cấp nhiều tính năng để cải thiện trải nghiệm phát triển PHP . Một cách để duyệt qua mã của bạn trong IDE hoặc trình chỉnh sửa của bạn trong khi tập lệnh đang thực thi. Ghi mọi lời gọi hàm, với các đối số và vị trí gọi vào đĩa.
Làm cách nào để gỡ lỗi PHP bằng Xdebug?Tuy nhiên, điều này chỉ được đề xuất khi bạn cần kết nối với Máy chủ Web hiện có với Xdebug đã được định cấu hình hoặc muốn chạy và gỡ lỗi tập lệnh PHP một cách nhanh chóng. . Chuyển đến xDebug Tải xuống Xdebug 2. 4. 0rc1 Đổi tên nó thành php_xdebug. dll Dán tệp này vào thư mục “php/ext” Khởi động lại máy chủ của bạn Xdebug sử dụng giao thức nào?Giới thiệu # Xdebug tương tác với các IDE để cung cấp chức năng gỡ lỗi từng bước và do đó, bạn cũng cần định cấu hình một IDE biết cách giao tiếp với Xdebug bằng giao thức DBGp mở. This protocol is supported by nearly every PHP IDE (including Visual Studio Code and PhpStorm), and also by text-based editors. |