Bạn chỉ có thể gỡ lỗi mã PHP của mình bằng cách sử dụng các chức năng gỡ lỗi kết xuất, chẳng hạn như 0, và thành thật mà nói, tất cả chúng ta đã làm điều đó rất nhiều. Mặc dù đôi khi hữu ích, nhưng chúng thường không đủ và thực sự có thể làm bạn chậm lại trong khi phát triển. Phải có một cách tốt hơn, chắc chắn? Show
Nhập Xdebug, công cụ lược tả và gỡ lỗi từng bước khá tuyệt vời dành cho PHP Trong bài đăng này, tôi sẽ đưa bạn qua hành trình Xdebug của tôi và chỉ cho bạn cách sử dụng nó để giúp cuộc sống của bạn dễ dàng hơn. Bạn có thể cảm ơn tôi sau (trong phần bình luận) 🙂 Nếu bạn là kiểu người thích tìm hiểu mọi thứ một cách trực quan, thì Jonathan, nhà giáo dục nhà phát triển của chúng tôi, đã tạo một video ngắn hướng dẫn chi tiết cách sử dụng Xdebug với PHPStorm Xdebug đã thay đổi cuộc đời tôi như thế nàoMột vài năm trước, tôi không biết có trình gỡ lỗi tồn tại, chưa bao giờ nghe nói về Xdebug và rất hài lòng khi sử dụng một chức năng mà tôi đã ghép lại với nhau từ Stack Overflow trong tất cả các trang web WordPress của mình để gỡ lỗi
Đó là tất cả những gì tôi nghĩ mình cần cho đến khi ai đó giới thiệu tôi với Xdebug và cuộc đời tôi đã thay đổi. Xin lỗi cường điệu, nhưng nó đã xảy ra Khi bạn kết xuất gỡ lỗi bằng các hàm như 0, bạn chỉ xuất các biến bạn xác định, đó có thể không phải là những gì bạn cần. Ví dụ: trong khi khắc phục sự cố một số mã, bạn thêm chức năng vào đâu đó để gỡ lỗi một biến. Bạn làm mới trang của mình để dòng gỡ lỗi được thực thi, sau đó kiểm tra nhật ký lỗi của bạn để xem đầu ra. Nếu điều này không cung cấp cho bạn bất kỳ thông tin chi tiết nào về nguyên nhân của sự cố hiện tại, thì bạn cần quay lại và thêm nhiều dòng gỡ lỗi vào mã. Rửa sạch và lặp lạiXdebug cho phép bạn ngắt trong quá trình thực thi mã và kiểm tra tất cả các biến trong phạm vi trong một yêu cầu. Điều này có nghĩa là bạn có mọi thứ cần thiết để khắc phục sự cố chỉ trong một lần lặp lại chu trình này. Bạn tiết kiệm được rất nhiều thời gian khi theo dõi các vấn đề và quy trình phát triển của bạn hiệu quả hơn Khắc phục sự cố ++ với XdebugXdebug thực sự tỏa sáng khi cố gắng khắc phục sự cố mà bạn hoàn toàn không biết nguyên nhân. Nếu bạn biết chức năng của mình bị hỏng, các dòng nhật ký bên trong nó rất tuyệt và hoạt động tốt. Nhưng hành vi lạ gây ra sự cố có thể đến từ bất kỳ đâu trong dự án, chẳng hạn như plugin hoặc chính lõi WordPress. Làm thế quái nào để bạn theo dõi nó xuống? Bằng cách sử dụng các điểm ngắt, bạn có thể tạm dừng thực thi mã tại bất kỳ thời điểm nào, điều đó có nghĩa là điều tốt nhất nên làm là ngắt sớm và theo dõi quá trình thực thi mã với Xdebug (thêm về điều đó sau) cho đến khi bạn phát hiện ra điều gì đó không ổn. Để tiết kiệm thời gian, bạn có thể dần dần di chuyển các điểm dừng xa hơn trong quá trình thực thi cho đến khi bạn tiến gần hơn đến vấn đề tiềm ẩn, thay vì vi phạm mã đã được phân tích là không phải nguyên nhân của vấn đề. Khi tìm thấy sự cố, bạn có thể nhanh chóng thay đổi giá trị của các biến sau khi chúng được chỉ định, vì vậy bạn có thể kiểm tra các bản sửa lỗi tiềm năng trong khi gỡ lỗi, tất cả trong cùng một yêu cầu Phát triển theo hướng gỡ lỗiMột công dụng tuyệt vời khác của Xdebug là sử dụng nó một cách chủ động trong quá trình phát triển thay vì phản ứng với các sự cố mã hiện có. Hãy nghĩ về điều này giống như Phát triển dựa trên thử nghiệm (TDD) nhưng trước tiên hãy sử dụng trình gỡ lỗi thay vì viết thử nghiệm. Tôi thậm chí không chắc liệu Debug Driven Development (DDD) có phải là một thuật ngữ được sử dụng rộng rãi hay không, nhưng đối với tôi, tôi đã sử dụng Xdebug để giúp tôi viết mã mới theo một số cách
Đây không phải là điều tôi làm mọi lúc, nhưng Xdebug cung cấp cho tôi cái nhìn sâu sắc này khi tôi cần Cài đặt XdebugHy vọng rằng những lợi ích tôi đã trình bày chi tiết khiến bạn muốn sử dụng Xdebug và bạn đã sẵn sàng cho một số bước cài đặt. Tôi đã tập hợp một danh sách các môi trường cục bộ phổ biến nhất với một số liên kết hữu ích để cài đặt Xdebug trên chúng
Matt Stauffer gần đây cũng đã biên soạn một danh sách các cấu hình phổ biến có sẵn, vì vậy nếu tôi bỏ lỡ nó, bạn nên tìm thứ gì đó cho môi trường cục bộ của mình ở đó Bạn có làm việc với một môi trường địa phương khác và cần một số hướng dẫn không? Phiên bản Xdebug 3Vào tháng 11 năm 2020, Xdebug 3 được phát hành. Bên cạnh những cải tiến lớn về hiệu suất và hỗ trợ PHP 8, thay đổi quan trọng nhất là cách bạn bật chức năng Xdebug thông qua cài đặt 3 mới. Ngoài việc giúp kích hoạt các loại khác nhau dễ dàng hơn, nó còn thay đổi cách bạn định cấu hình Xdebug trong 4 của mình ngay từ đầuHướng dẫn trực tuyến mà bạn đang theo dõi để cài đặt và định cấu hình Xdebug cho môi trường phát triển cục bộ của mình sẽ xác định cài đặt nào bạn cần định cấu hình. May mắn thay, có tài liệu trợ giúp Xdebug về nâng cấp từ phiên bản 2 lên phiên bản 3 để hướng dẫn bạn Ví dụ nhanh, nếu bạn đã cài đặt phiên bản 2, bạn có thể được hướng dẫn định cấu hình cài đặt 4 của mình để trông giống như thế này
Trong khi nếu bạn đã cài đặt phiên bản 3, bạn sẽ cần cấu hình nó như thế này
Trong phiên bản 3, bạn cũng có thể kích hoạt các chế độ Xdebug khác nhau bằng cách chỉ định chúng trong danh sách được phân tách bằng dấu phẩy ________số 8_______Đối với bài viết này, tôi đang sử dụng Xdebug 3, với 3 được đặt thành 7, nhưng chúng tôi cũng sẽ đề cập đến bất kỳ sự khác biệt nào đối với phiên bản 2Tích hợp PhpStormtin tức chớp nhoáng. Tôi yêu PhpStorm. Và đoán xem? Nếu bạn không sử dụng PHPStorm, hầu hết các Môi trường Phát triển Tích hợp (IDE) khác như Visual Studio Code và các trình chỉnh sửa như Sublime Text đều có thể được định cấu hình để sử dụng Xdebug bắt đầu gỡ lỗiKhi bạn đã cài đặt Xdebug và cấu hình PhpStorm, bạn có thể bắt đầu gỡ lỗi mã của mình một cách tương tác. Điều này được thực hiện bằng cách đặt các điểm dừng tại một số dòng mã nhất định của bạn và yêu cầu PhpStorm lắng nghe các kết nối đến. Khi 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, cho phép bạn có được thông tin chi tiết có giá trị về tất cả những gì đang diễn ra trong quá trình thực thi Thanh bên của bảng gỡ lỗi có nhiều nút khác nhau để kiểm soát việc thực thi mã. Đây là từ trên xuống khi chúng xuất hiện trong ảnh chụp màn hình
Bên cạnh các tab 8, 9 và 0, thanh trên cùng của bảng điều khiển cách trình gỡ lỗi duyệt qua mã để bạn có thể kiểm tra các phần khác nhau của cơ sở mã
Hầu hết các nút này cũng có phím tắt, nhưng thường được sử dụng nhất là
Điểm ngắt được thêm bằng cách nhấp vào rãnh bên trái của mã, dọc theo dòng bạn muốn tại đó bạn muốn ngắt. PhpStorm cũng cho phép bạn đặt các điểm dừng có điều kiện, nơi bạn thêm logic PHP để kiểm soát khi một điểm ngắt thực sự kích hoạt Khi khắc phục sự cố, việc kiểm tra và xem giá trị của một biến trong suốt quá trình thực hiện yêu cầu để xem khi nào thay đổi sẽ rất hữu ích. PhpStorm cho phép bạn thêm các biến vào danh sách mà nó theo dõi và hiển thị trong bảng “Đồng hồ” riêng biệt, tách biệt với tất cả dữ liệu trong bảng “Biến” chính. Bạn có thể xem một biến bằng cách nhấp chuột phải vào biến trong tệp trong khi gỡ lỗi và chọn Thêm vào Đồng hồ hoặc thực hiện tương tự từ biến trong bảng "Biến" Tuy nhiên, đồng hồ không giới hạn ở các biến. Bạn thậm chí có thể thêm các biểu thức hoặc chức năng vào danh sách theo dõi của mình. Điều này cực kỳ hữu ích khi bạn đang làm việc với một CMS như WordPress, sử dụng nhiều chức năng của trình trợ giúp như 1 hoặc 2. Bằng cách thêm lệnh gọi chức năng đầy đủ vào danh sách theo dõi của bạn và bạn sẽ luôn có thể xem kết quả của chức năng đó sẽ như thế nàodấu vết ngăn xếpTrong Xdebug phiên bản 2, việc bật Xdebug sẽ cho phép theo dõi ngăn xếp mở rộng đối với bất kỳ lỗi, thông báo hoặc cảnh báo nào được ghi vào nhật ký PHP. Với việc phát hành phiên bản 3, điều này đã được thay đổi để nó cần được kích hoạt rõ ràng bằng cách đặt Xdebug 3 thành 4Bởi vì tôi dựa vào 5 hoặc PHP error_log để cảnh báo tôi về các vấn đề, nhưng tôi sử dụng PhpStorm để xem dấu vết ngăn xếp, tôi không kích hoạt dấu vết ngăn xếp mở rộng (và rất ồn ào). Khi tôi sử dụng phiên bản 2 của Xdebug, tôi đã vô hiệu hóa dấu vết ngăn xếp trong nhật ký bằng cách đặt cái này vào tệp 7 của mình
Sử dụng nâng caoNắm vững những điều cơ bản? lập hồ sơKhi bạn thực sự cần điều tra các vấn đề về hiệu suất với mã hoặc trang web của mình, một trong những công cụ tốt nhất mà chúng tôi tìm thấy là Blackfire, công cụ mà chúng tôi đã viết về. Nhưng Xdebug cũng tạo hồ sơ cho bạn và PhpStorm có thể giải thích kết quả, điều này thật tuyệt vì điều đó có nghĩa là bạn không bao giờ phải rời khỏi PhpStorm. 😂 , hãy chỉnh sửa tệp 4 của bạn để thêm hoặc bỏ ghi chú những dòng này trong phần XdebugPhiên bản 3
Phiên bản 2
Sau đó, Xdebug sẽ tạo một tệp nhật ký hồ sơ trong 9 hoặc 0 mà bạn chỉ định cho mỗi lần thực thi mã của mình. Hãy nhớ tắt trình cấu hình khi bạn hoàn tất, để bạn không lấp đầy ổ cứng của mình bằng các tệp nhật ký. Ngoài ra, hãy đặt thư mục đầu ra thành thư mục 1 cho hệ điều hành của bạn. Các nhật ký này sau đó có thể nằm trong PhpStorm bằng cách điều hướng đến Công cụ > Phân tích Ảnh chụp Xdebug Profiler và chọn tệp nhật ký. Hình ảnh không chuyên sâu như Blackfire hoặc sử dụng thứ gì đó như KCachegrind, nhưng đây vẫn là một cách tuyệt vời để phân tích các tắc nghẽn trong mã của bạnGỡ lỗi từ xa qua SSHBạn chỉ có thể khắc phục lỗi nếu bạn có thể tạo lại chúng trên môi trường phát triển của mình. Tất nhiên, khi nói đến việc chạy một trang web, chúng tôi khuyên bạn nên có môi trường phát triển gần với sản xuất nhất có thể và bạn gỡ lỗi trên một bản sao gần như có thể của cơ sở dữ liệu sản xuất. Tuy nhiên, đôi khi lỗi và điều kỳ lạ sẽ chỉ xảy ra khi sản xuất. Không ai muốn bắt đầu loay hoay trên một trang web trực tiếp, chỉnh sửa tệp để thêm dòng nhật ký. Đừng lo, PhpStorm và Xdebug sẽ hỗ trợ bạn. Bạn có thể cài đặt Xdebug trên máy chủ từ xa và gỡ lỗi thực thi mã cục bộ bằng Xdebug và PhpStorm. Tính năng này là cứu cánh và không yêu cầu nhiều để thiết lập. Đảm bảo tắt Xdebug khi bạn hoàn tất, để hiệu suất trang web của bạn không bị ảnh hưởng bởi Xdebug một cách không cần thiết Xdebug có phải là cách duy nhất để gỡ lỗi PHP cho WordPress không?Câu trả lời ngắn gọn là 'không', câu trả lời dài là 'còn tùy'. Mặc dù Xdebug là cách được đề xuất để kích hoạt tính năng gỡ lỗi theo bước cho PHP, nhưng bạn có thể muốn xem xét các tùy chọn khác. Một người mà tôi gặp gần đây là Ray, từ những người ở Spatie. Ray là một ứng dụng trả phí chạy trên Mac, Windows hoặc Linux và kết nối với dự án PHP của bạn. Điều này được thực hiện thông qua gói soạn thảo hoặc plugin WordPress nếu bạn đang gỡ lỗi cho WordPress Khi bạn đã thiết lập xong mọi thứ, bạn có thể sử dụng lệnh gọi hàm 2, rất giống với bảng điều khiển của JavaScript. log(), để gửi bất kỳ dữ liệu tùy ý nào tới ứng dụng Ray. Bạn có thể gửi cho nó các chuỗi, biến đơn giản (bao gồm cả mảng và đối tượng) và thậm chí nhiều kết hợp dữ liệu
Ray gửi dữ liệu này đến ứng dụng Ray bằng quy trình tương tự như bạn có thể thực hiện khi thực hiện yêu cầu cURL tới API HTTP JSON Có một số lợi thế khi sử dụng Ray trên Xdebug. Bởi vì Ray sẽ chỉ truyền dữ liệu từ mã của bạn đến ứng dụng Ray khi ứng dụng đang chạy, nó sẽ không ảnh hưởng nhiều đến hiệu suất hệ thống của bạn như Xdebug có thể. Xdebug 3 cải thiện khá nhiều về hiệu suất so với Xdebug 2 và bạn có thể tắt gỡ lỗi thông qua tiện ích mở rộng của trình duyệt khi cần. Tuy nhiên, nó vẫn được cài đặt và hoạt động trên môi trường PHP cục bộ của bạn, vì vậy bạn chỉ có thể thực sự tắt nó hoàn toàn bằng cách vô hiệu hóa nó trong 4 của mìnhRay cũng cho phép bạn thực hiện những việc nâng cao hơn như khả năng tạm dừng thực thi mã, gỡ lỗi từ xa qua SSH và khả năng nắm bắt mọi truy vấn đang được thực thi trong một yêu cầu PHP. Xdebug làm được nhiều hơn một chút và miễn phí, nhưng Ray là thứ cần xem xét như một tùy chọn để gỡ lỗi, đặc biệt nếu bạn vẫn dựa vào gỡ lỗi kết xuất trong quá trình phát triển Hỗ trợ XdebugNgười đứng sau Xdebug là Derick Rethans. Anh ấy là nhà phát triển duy nhất của Xdebug và dựa vào các nhà tài trợ để tài trợ cho công việc liên tục của anh ấy là bảo trì và cập nhật Xdebug. Tại Delicious Brains, chúng tôi đã là người ủng hộ Patreon của anh ấy kể từ tháng 2 năm 2019. Nếu bạn hoặc công ty của bạn thấy Xdebug hữu ích, tại sao không tài trợ cho anh ấy thông qua Patreon của anh ấy hoặc qua GitHub? Phần kết luậnTôi hy vọng đây là phần giới thiệu tốt về mức độ mạnh mẽ và giá trị của việc sử dụng trình gỡ lỗi như Xdebug đối với quy trình phát triển của bạn, cũng như một giải pháp thay thế khả thi nếu bạn thấy nó quá phức tạp. Xdebug là một trình tiết kiệm thời gian rất lớn và tôi không thể tưởng tượng được việc phát triển mà không có nó trong hộp công cụ của mình. Bạn có sử dụng Xdebug, Ray hoặc trình gỡ lỗi khác không? Mục nhập này đã được đăng trong WP Offload Media, Mã và được gắn thẻ Hiệu suất, Phát triển, Mẹo phát triển WordPress, Gỡ lỗi, PhpStorm, Xdebug Thông tin về các Tác giảIain PoulsonIain là giám đốc sản phẩm có trụ sở tại miền nam nước Anh. Anh ấy cũng điều hành nhiều sản phẩm WordPress. Anh ấy giúp mọi người mua và bán doanh nghiệp WordPress và viết bản tin hàng tháng về xu hướng WordPress @polevaultweb. com
|