Mỗi lần xuân đến mình lại nhớ về câu. "Có mùa xuân sang là tôi lại thêm một tuổi". Nghe quen quen phải không ạ. Vâng các bạn nhầm lẫn đâu, nó nghe như lời của một bài hát nào đó phải không? . Mà mình đã edit lại một chút để phù hợp với hoàn cảnh bản thân. Mỗi lần đọc câu đó mình lại nhớ đến câu mà cư dân mạng truyền tai nhau. "Có lớn mà không có". Vâng đó là "chính ta của hiện tại", để cải thiện thiện sự "ngu lâu dai bền" mà mình đã tích cực tìm tòi và học hỏi. Và hôm nay mình viết bài này để chia sẻ một trong những điều mình đã học. mã gỡ lỗi PHP sử dụng vscode + xdebug
Gỡ lỗi cơ bảnTrong quá trình học tập và làm việc mình đọc code PHP khá nhiều. Khi mình muốn debug code PHP thì mình sử dụng các hàm như
- tiếng vang. in ra signal for know the stream is going true
- var_dump. display value of the variable
- lối ra. exit nếu muốn code stop back tại vị trí mong muốn
Mình hay kết hợp 3 hàm này để debug dễ dàng hơn
Với 3 hàm trên thì quá trình gỡ lỗi thực sự là khó khăn. Nói cho văn thơ thì đây là thời kỳ ăn lông ở lỗ
Sau một thời gian sử dụng cách này cảm thấy công việc theo dõi code phức tạp quá và mình muốn tìm cái gì đó tốt hơn. Vì mình đã tìm được người bạn thân nhất của mình, google là bạn thân nhất. , và mình cũng có được câu trả lời phù hợp. Câu trả lời đó là debug_print_backtrace [hiển thị luồng gọi của hàm]
Khi thêm hàm debug_print_backtrace, kết quả mang lại rất ấn tượng có đúng không? . Nhưng dù sao thì mình cảm thấy tự hào về bản thân vì cũng đã đặt chân tới thời kỳ đồ đá rồi. . v
Mình sẽ nói thêm về tại sao mình lại kết hợp các hàm như vậy
In sao lại trong dòng cm0s?
Cái này một phần là thói quen, một phần có nhiều kết quả hiển thị ra không chỉ có dữ liệu gỡ lỗi mà còn nhiều dữ liệu không liên quan khác. Do đó mình in ra một dấu hiệu nhận biết để sử dụng tính năng tìm kiếm cho nhanh
Tại sao mình lại sử dụng var_dump để nhập giá trị biến mà không phải là tiếng vang?
var_dump không chỉ trong giá trị mà còn trong cả kiểu dữ liệu của biến. Một điểm nữa là echo sẽ không có giá trị nếu chúng không phải là kiểu chuỗi [chuỗi]. Cuối cùng là tính thẩm thấu, nếu dùng echo thì phải thêm \n vào cuối chuỗi để khi hiển thị nó có thể xuống dòng. That \n must be set in hai dấu nháy kép ["] thì mới xuống dòng. If set in two flashing menu ['], not been. Do vậy mình đã chọn sử dụng var_dump là sự lựa chọn phù hợp nhất
"Kẻ còn chơi là còn mất"
Với phương pháp châm cứu đến nơi chơi tới tàn phế, mình đã ra một quyết định táo bạo là. tìm xem có "đồ" nào tốt hơn không?
Gỡ lỗi với vscode + xdebugNếu bạn là một người biết múa quạt thì chắc chắn bạn sẽ biết câu. đấy là bạn chưa chơi đồ đấy bạn ơi
Đúng đúng câu này không có sai đâu, hãy tin vào mình. Chính mình là người đã trải nghiệm và rút ra kết luận rằng. "Chơi đồ thì sướng hơn không chơi". Từ ngày chơi đồ vào thì mình đã nghiện mất rồi. Dù được nhiều người giới thiệu. "bạn ơi đừng nghiện nữa, nhà mình còn gì đâu" nhưng mình vẫn không thể bỏ được. Để biết "đồ" có gì mà lại làm cho mình nghiện sâu đến thế. Thì hãy cùng mình đọc tiếp =]]
/etc/php/7.4/fpm/php.ini
4Cài đặt
Cài đặt tiện ích mở rộng Gỡ lỗi PHP
Cài đặt PHP Debug rất đơn giản, bạn mở ứng dụng vscode và vào các phần mở rộng và tìm kiếm với từ khóa PHP
Dễ dàng thấy phần mở rộng PHP Debug, bạn chọn vào nó và cài đặt như bình thường. Phần này quá đơn giản không lưu ý gì
Cài đặt Xdebug
Sau khi cài đặt xong PHP Debug extension, tiếp theo ta sẽ cài đặt Xdebug. Để cài đặt Xdebug nhanh chóng và đơn giản bằng cách sử dụng trình hướng dẫn Xdebug
Ta sẽ dán dữ liệu từ câu lệnh
/etc/php/7.4/fpm/php.ini
5 vào ô nhập liệu của trình hướng dẫn. Sau khi nhập xong, ta nhấn nút ở phía dưới để chuyển sang hướng dẫn cài đặt trangLàm theo 10 bước trong hướng dẫn là ta đã cài đặt xdebug thành công
Trong phần này ta cần nhớ
- Phiên bản Xdebug mà ta tải
- Đường dẫn lưu tệp thư viện Xdebug ở bước 9
Cấu hình file php. ban đầu
Sau khi cài đặt xong phần mở rộng tiếp theo cần làm là cấu hình file php. ini to could debug with vscode
1. Xác định nơi lưu tệp cấu hình
To known php file. ini của ta đang ở đâu thì ta tạo file info. php trong thư mục web có chứa đoạn mã sau
Truy cập vào file đó để biết nơi lưu file php. ban đầu
Như trên hình nơi lưu tệp php. ini is
/etc/php/7.4/fpm/php.ini
2. Sửa nội dung file php. ban đầu
Open file php. ini với đường dẫn đã được xác định từ bước trên và sửa đổi để phù hợp
Add to end file php. ini with after code
Xdebug 3. x. x
[XDebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000
zend_extension = /usr/lib/php/20190902/xdebug.so
Xdebug 2. x. x
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
zend_extension = /usr/lib/php/20190902/xdebug.so
Sau khi đã hoàn tất tất cả các bước trên ta khởi động lại. nginx và php-fpm
sudo systemctl restart nginx.service && sudo systemctl restart php7.4-fpm.service
Để kiểm tra ta có thể sử dụng lệnh
/etc/php/7.4/fpm/php.ini
6 hoặc vào trang thông tin. php made from beforeUse
Before when used to make file config debug for vscode. Việc tạo file cấu hình cũng đơn giản, các bạn tham khảo tại đây để cấu hình nhé. Mình đưa ra file cấu hình của mình để các bạn so sánh
________số 8Để bắt đầu nghe bạn nhấn vào nút chạy màu xanh
Tiếp theo là đặt điểm dừng và gỡ lỗi. Trong hình bên dưới mình đặt break point tại dòng 1384 sau đó mình gửi yêu cầu gỡ lỗi
Với sự giúp đỡ của trình gỡ lỗi, công việc gỡ lỗi của mình trở nên nhẹ nhàng hơn nhiều. Với trình gỡ lỗi mình có thể nhảy từng dòng để quan sát sự thay đổi giá trị của các biến cũng như luồng thực thi của chương trình. Và điểm lợi hại của trình gỡ lỗi cho phép mình có thể thay đổi giá trị trong lúc gỡ lỗi. Từ đó có thể thay đổi luồng thực thi mà không tốn nhiều công sức. Nói chung là debuger rất có hại. . v
Đến đây các bạn đã hiểu vì sao mình lại bị nghiện khi chưa chơi đồ. =]]
Đến đây cũng coi như hết bài rồi. Phân vùng bên dưới đã được giải quyết lỗi trong quá trình cài đặt và sử dụng
Thank you many
Khắc phục lỗiTrong quá trình cài đặt không thể tránh khỏi lỗi. Do đó khi cài đặt các bạn cần lưu ý một số điểm sau
- Thực hiện đúng theo hướng dẫn
- Cấp quyền đầy đủ [khi sử dụng linux]
Để xem thông tin Xdebug cũng như kiểm tra lỗi khi cài đặt bạn tạo tệp xdebug. php chứa đoạn mã sau
Error. Tạo ổ cắm cho 'localhost. 9000', getaddrinfo. đối số không hợp lệ
Lỗi này xảy ra do không thể phân giải tên miền localhost thành địa chỉ IP. Do trước đó mình đã đổi localhost thành notlocalhost trong file /etc/hosts