Làm thế nào để bạn gỡ lỗi các plugin?


49

Tôi khá mới với việc tạo plugin và gặp khó khăn trong việc gỡ lỗi.

Tôi đã sử dụng rất nhiều tiếng vang và nó là cẩu thả và xấu xí.

Tôi chắc chắn có một cách tốt hơn để làm điều này, có thể là một IDE với trình gỡ lỗi mà tôi có thể chạy toàn bộ trang web trong đó có plugin?


1
Tôi chưa thấy một IDE chạy WordPress hoàn toàn trong IDE ... mặc dù điều đó sẽ rất tuyệt. Tôi gỡ lỗi các trình cắm bằng cách chạy WAMP cục bộ và mã trong Dreamweaver. Nếu bạn đặt WP_DEBUGthành false, như John khuyến nghị, thì bạn sẽ có một ý tưởng khá hay về những gì đang xảy ra, nếu có bất cứ điều gì, trong các tập lệnh của bạn. Sau đó, bạn có thể chỉnh sửa trong Dreamweaver, nhấn Ctrl + S và sau đó F5 trong trình duyệt để xem ngay các thay đổi.
EAMann

1
@EAMann - Hãy chắc chắn kiểm tra cả PhpEd (cho Windows) và PhpStorm + XDEBUG (cho Mac, Linux và Windows).
MikeSchinkel

Câu trả lời:


21

Đi vào wp-config.php và đổi define('WP_DEBUG', false);thành define('WP_DEBUG', true);. Ngoài ra, cài đặt plugin Thông báo đăng nhập của Andrew Nacin .


12
Tôi cũng sẽ xem bài viết khác của Nacin
kevtrout

Với PHP 5.4+, bạn có thể sẽ bị ngập trong các thông báo E_STRICT. Thả ý chính này vào thư mục plugin và kích hoạt để xóa thông báo Nghiêm, hủy kích hoạt để trở lại dịch vụ bình thường của bạn.
web biết

12

Nếu bạn đang gặp lỗi in, thì x-debug là một phần mở rộng PHP tuyệt vời bổ sung các backtraces hiện đại cho PHP.

Nếu bạn đang cố gắng tìm ra những gì đang diễn ra ở nơi không có lỗi, cách tiếp cận yêu thích của tôi là xác định một chức năng ghi lại đầu ra của nó vào một tệp. Vì vậy, tôi làm plog (biến $) và nó xuất hiện trong tệp nhật ký mà sau đó tôi có thể kiểm tra. Điều này đặc biệt hữu ích khi bạn đang cố gắng tìm hiểu những gì đã xảy ra trước khi tiêu đề () được gọi hoặc các tình huống khác mà bạn không thể in ra STDOUT.


10

Sử dụng xdebug + NetBeans IDE. Khi được định cấu hình đầy đủ - dễ thực hiện - bạn có thể đặt điểm dừng trong plugin và xem các biến tại điểm dừng. Tôi nghĩ đó là cách tốt nhất để gỡ lỗi các plugin hoặc bất kỳ ứng dụng php nào cho vấn đề đó.


6

Tôi gỡ lỗi theo cách cũ, error_log()ing và var_dumping. Tôi thấy đó là cách hiệu quả nhất đối với tôi, tôi có một vài hàm bao bọc để xử lý các loại dữ liệu khác nhau, vì error_logmảng và đối tượng ing có thể là một nỗi đau. Ngoài ra, sử dụng print_r()trong có thể khó đọc khi nó không ở trong một <pre>. Tôi có tj_log()lỗi ghi nhật ký và tj()để hiển thị đầu ra (về cơ bản hiển thị bất kỳ loại dữ liệu nào trong một mannor có thể trình bày:

function tj( $code ) {

    ?>
    <style>
        .tj_debug { word-wrap: break-word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
    </style>
    <br /><pre class="tj_debug">

    <?php
    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        var_dump( $code );

    else :
        print_r( $code );

    endif;

    echo '</pre><br />';

}

function tj_log( $code ) {

    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        $code = var_export( $code, true );

    else :
        $code = print_r( $code, true );

    endif;

    error_log( $code );

}

Vì vậy, sau đó tôi chỉ cần làm: tj( $current_user );hoặc bất cứ điều gì.


5

Sau khi mày mò với một số IDE, tôi đã giải quyết được Notepad ++ cũ đơn giản với bảng màu Syntax Highlighting tùy chỉnh cực cao.

Tôi có một macro được thiết lập sao cho khi tôi nhấn Shift-Ctrl-X, đoạn mã sau sẽ xuất ra trong đó con trỏ của tôi là:

echo "<pre>";
var_dump($);
echo "</pre>";
exit();

Thật đơn giản, nhưng tôi thường có thể tìm ra 90% lỗi của mình với macro này cộng với WP_DEBUG được bật.


2
Hay lắm. Bàn phím nóng trong trình chỉnh sửa rock!
hakre

1
Tôi thích đầu ra được đưa ra bởi print_r($var, true)thay vì var_dump.
brasofilo

5

Tôi đã viết một lớp nhỏ để tạo một logfile, rất hữu ích khi bạn gỡ lỗi các cuộc gọi ajax.

http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php

Bạn chỉ cần làm một cái gì đó như:

Gỡ lỗi :: log ("Đây là thông báo gỡ lỗi");

Khi dòng đó được thực thi, thông báo sẽ được thêm vào trong tệp nhật ký và sau đó bạn có thể sử dụng lệnh tail (nếu bạn đang sử dụng một số hệ thống xử lý kiểu unix)

đuôi -f mylogfile.log

Nếu bạn có thể truyền cho hàm này một mảng hoặc một đối tượng là tốt.

lưu ý bạn cần thay đổi dòng 20 cho đường dẫn bạn muốn lưu tệp nhật ký của mình


3

Tôi sử dụng Aptane IDE trên Linux và UltraEdit trên Windows và cái này cũng có trình phân tích cú pháp PHP. Ngoài ra, tôi xem tất cả các gợi ý từ xDebug với hằng số WP_DEBUGđược xác định trong wp-config.php.

Xem thêm bài viết của tôi về chủ đề này và thoải mái bình luận và đưa ra phản hồi về các công cụ phát triển của bạn.


2

Tôi khuyên bạn nên kiểm tra FirePHP . Bạn có thể gửi thông tin gỡ lỗi tới Firebird của Firefox qua các tiêu đề HTTP, điều này thường giúp cho đầu ra gỡ lỗi sạch hơn.



1

Có hai IDE tôi có thể giới thiệu và tôi đã sử dụng cả hai loại: PhpED (chỉ dành cho Windows) và PhpStorm + XDEBUG (Mac, Windows và Linux.) Bây giờ tôi chỉ có thể sử dụng Mac.

Cả hai người ROCK! Tin vui rằng PhpStorm là $ 49 trước tháng 9 năm 2010 và chỉ $ 99 sau đó. Nếu tôi đã ở trên Windows và phải chọn lại, không chắc tôi sẽ chọn cái nào.

Thành thật mà nói tôi không thể không cảm thấy rằng bất kỳ nhà phát triển plugin nào không sử dụng một trong hai công cụ này đều bị khuyết tật nghiêm trọng, đặc biệt là nếu chúng còn khá mới để phát triển các plugin WordPress.


1

Krumo - lớp gỡ lỗi php theo kiểu

Một điều thực sự tốt đẹp khác là lớp php "krumo". Nó được triển khai trong ½ phút và cung cấp một cách dễ dàng để gỡ lỗi tất cả các loại biến:

  • các đối tượng,
  • mảng,
  • chuỗi / float / số nguyên / vv.

Thêm vào đó, nó giúp backtracing, hiển thị các lớp được tải hoặc các tệp được bao gồm và mọi thứ theo yêu cầu.

Thêm vào đó là MIỄN PHÍ!

Tải xuống

Krumo @sourceforge


0

Tôi sử dụng một plugin $ 13 có tên LogPress mà bạn có thể mua trên ThemeForest và nó là một God-send tuyệt đối. Bạn có thể gỡ lỗi mọi thứ liên quan đến plugin và trang web của họ. Hỗ trợ đăng nhập bảng điều khiển Fireorms và nhiều hơn nữa. Tôi không thể sống mà không có nó, đó là số tiền tôi sử dụng plugin này.

Plugin này có lẽ là số tiền tốt nhất tôi từng bỏ ra và nó đã tiết kiệm vô số giờ trong quá trình phát triển plugin Wordpress của tôi.


Ồ, tôi đã bị từ chối vì đã giới thiệu một plugin trả phí mà tôi không có liên quan gì? Đó có phải là một chút nặng tay không?
Dwayne Charrington

Tôi không phải là người bỏ phiếu, nhưng tôi không ngạc nhiên. Bạn đang sử dụng các từ như thể bạn đang cố gắng bán plugin. Đề xuất mọi thứ là tốt, nhưng đẩy mạnh bán như "gửi Chúa tuyệt đối". Mọi người ghét quảng cáo. Chỉ cần giảm ngôn ngữ và khuyến nghị sẽ nói cho chính nó.
icc97

0

Tôi đang sử dụng phpED và xdebug nhưng đối với tôi (và dường như đối với người khác) không thể gỡ lỗi các plugin hoặc tệp của chủ đề! Trình gỡ lỗi chỉ dừng trên các điểm dừng trong các tệp "lõi" chính hoặc gốc! ai có thể giúp tôi


0

Đầu tiên tôi thêm define('WP_DEBUG', false);vào tệp wp-config.php (như hầu hết mọi người đã nói) vào bản cài đặt cục bộ của tôi, đây là bản sao gần đây của một trang sản xuất có liên quan (cả tệp và dữ liệu). Điều này làm cho công cụ nhanh chóng, an toàn, riêng biệt nhưng phản ánh tốt ít nhất một nơi mà plugin sẽ thực sự được sử dụng.

Tôi cũng thêm plugin Debug Bar cùng với một số tiện ích bổ sung Debug Bar (ví dụ: Transents) - phù hợp với plugin của bạn.

Tôi cũng sử dụng tiện ích bổ sung Fireorms cho Firefox, một công cụ tuyệt vời để giúp theo dõi các vấn đề về html, css và JavaScript cũng rất tốt để xem xét sự kỳ lạ về bố cục.

Tôi viết mã bằng UltraEdit mà tôi đã sử dụng hơn 15 năm cho cả đống mã hóa (php qua SQL) cả ở nơi làm việc và ở nhà và vì vậy điều này hoạt động tốt với tôi nhưng có lẽ tôi không đủ để đánh giá như một IDE cho nhiều người Nó có tính năng tô sáng cú pháp, hoàn thành tự động và các tính năng bố trí mã và một loạt các công cụ phím tắt html và css có thể giúp tránh lỗi chính tả và giống nhau. Chủ yếu là điều này mang lại sự quen thuộc với tôi, đó là một khía cạnh quan trọng thường bị bỏ qua khi vội vàng đến cái mới. Bộ nhớ cơ hỗ trợ khả năng lặp lại ngay cả trong mã hóa.

Và tất nhiên tôi thường có một số trang thích hợp từ codex mở trong một tab khác trên một ví dụ phù hợp.

Tất cả đều giúp theo các cách khác nhau để làm nổi bật các lỗi mã hóa, phân tích cú pháp, chức năng và bố cục và không can thiệp nhiều vào cách tôi viết mã hoặc nếu không có gì không ổn. Hầu hết có thể bị bỏ qua hoặc hủy kích hoạt một chút nếu bạn đang thử nghiệm hoặc làm việc xung quanh một cái gì đó bạn sẽ xem lại sau này.

Ồ, và không có gì sai với tiếng vang hoặc print_r được định vị tốt để kiểm tra một cái gì đó tại một phím (miễn là bạn loại bỏ chúng khi bạn hoàn thành).



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.