플러그인을 어떻게 디버깅합니까?


49

나는 플러그인 제작에 익숙하지 않고 디버깅하는데 어려움을 겪고 있었다.

나는 많은 메아리를 사용했고 어리 석고 추악합니다.

플러그인을 포함하여 전체 사이트를 실행할 수있는 디버거가있는 IDE 일 수도 있습니다.


1
IDE 내에서 WordPress를 완전히 실행하는 IDE를 보지 못했습니다 ...하지만 훌륭합니다. WAMP를 로컬에서 실행하고 Dreamweaver에서 코드를 작성하여 플러그인을 디버깅합니다. WP_DEBUGJohn이 권장하는 것처럼 false로 설정 하면 스크립트 내에서 무엇이 잘못되었는지에 대한 좋은 아이디어를 얻습니다. 그런 다음 Dreamweaver에서 편집하고 브라우저에서 Ctrl + S를 누른 다음 F5를 눌러 변경 사항을 즉시 볼 수 있습니다.
EAMann

1
@EAMann-PhpEd (Windows) 및 PhpStorm + XDEBUG (Mac, Linux 및 Windows)를 모두 확인하십시오.
MikeSchinkel

답변:



12

오류가 인쇄되면 x-debug는 PHP에 최신 역 추적을 추가하는 훌륭한 PHP 확장입니다.

오류가없는 곳에서 일어나는 일을 해결하려고한다면, 내가 가장 좋아하는 접근법은 출력을 파일에 기록하는 함수를 정의하는 것입니다. 그래서 plog ($ variable)을 수행하면 로그 파일에 표시되어 검사 할 수 있습니다. 이것은 header ()가 호출되기 전에 발생한 일이나 STDOUT으로 인쇄 할 수없는 다른 상황을 해결하려고 할 때 특히 유용합니다.


10

xdebug + NetBeans IDE를 사용하십시오 . 완벽하게 구성되면 (쉽게 수행 할 수 있음) 플러그인에서 중단 점을 설정하고 중단 점에서 변수를 볼 수 있습니다. 플러그인 또는 해당 PHP 응용 프로그램을 디버깅하는 가장 좋은 방법이라고 생각합니다.


6

나는 구식 방식으로 error_log()ing과 var_dumping을 디버깅 합니다. 나는 그것이 가장 효율적인 방법이라는 것을 알았습니다. error_log배열과 객체를 처리하는 것이 고통 스러울 수 있으므로 여러 유형의 데이터를 처리하는 몇 가지 래퍼 함수가 있습니다 . 또한 print_r()in에 있지 않으면 in을 사용하는 것이 까다로울 수 있습니다 <pre>. I는이 tj_log()오류 로깅 및 tj()기본적 흉 mannor의 데이터 유형을 표시 출력 (보여주는 :

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 );

}

그래서 나는 단지 : tj( $current_user );또는 무엇이든합니다.


5

다수의 IDE로 땜질을 한 후에, 나는 매우 커스터마이징 된 Syntax Highlighting 색 구성표를 사용 하여 일반 오래된 메모장 ++에 정착했습니다 .

Shift-Ctrl-X를 누르면 커서가있는 곳에서 다음 코드가 출력되도록 매크로를 설정했습니다.

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

간단하지만 일반적 으로이 매크로와 WP_DEBUG를 사용하여 버그의 90 %를 사냥 할 수 있습니다.


2
좋은 움직임. 편집자의 키보드 단축키가 깜짝 놀랍니다!
hakre

1
print_r($var, true)대신에 의해 주어진 출력을 선호합니다 var_dump.
brasofilo

5

로그 파일을 만들기 위해 작은 클래스를 작성했으며 ajax 호출을 디버깅 할 때 매우 유용합니다.

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

다음과 같은 작업 만하면됩니다.

Debug :: log ( "이것은 디버그 메시지입니다");

해당 줄이 실행되면 메시지가 로그 파일에 추가되고 그 후에 tail 명령을 사용할 수 있습니다 (일부 유닉스 스타일 운영 시스템을 사용하는 경우)

tail -f mylogfile.log

이 함수에 배열이나 객체를 전달할 수 있다면.

주의 당신이 당신의 로그 파일을 저장하고자하는 경로의 라인 (20)을 변경해야


3

Linux에서 Aptane IDE를 사용하고 Windows에서 UltraEdit을 사용하며 PHP 파서도 있습니다. 또한 xDebug의 모든 힌트를에 WP_DEBUG정의 된 상수 로 wp-config.php봅니다.

이 주제에 대한게시물을 참조 하고 개발 도구에 대해 의견을 말하고 의견을 보내십시오.


2

FirePHP를 확인하는 것이 좋습니다 . HTTP 헤더를 통해 Firefox의 Firebug에 디버그 정보를 보낼 수 있으며, 이는 일반적으로보다 깨끗한 디버그 출력을 제공합니다.



1

내가 추천 할 수있는 두 가지 IDE가 있으며 광범위하게 사용했습니다 : PhpED (Windows에만 해당) 및 PhpStorm + XDEBUG (Mac, Windows 및 Linux). 저는 Mac에 있으므로 후자를 사용할 수 있습니다.

둘 다 ROCK! 좋은 소식은 PhpStorm이 2010 년 9 월 이전에 49 달러이고 그 후에는 99 달러라는 것입니다. Windows를 사용 중이고 다시 선택해야한다면 어느 것을 선택해야할지 잘 모르겠습니다.

솔직히 말하면,이 두 도구 중 하나를 사용하지 않는 플러그인 개발자는 특히 WordPress 플러그인 개발에 비교적 익숙하지 않은 경우 심각하게 장애가 있다고 생각합니다.


1

Krumo-스타일이 지정된 PHP 디버그 클래스

또 다른 좋은 점은 "krumo"php 클래스입니다. ½ 분 안에 구현되며 모든 종류의 변수를 쉽게 디버깅 할 수 있습니다.

  • 사물,
  • 배열,
  • 문자열 / 부동 / 정수 등

또한 백 트레이싱,로드 된 클래스 또는 포함 된 파일 및 요청시 모든 것을 보여줍니다.

게다가 무료입니다!

다운로드

크루 모 @sourceforge


0

나는 ThemeForest에서 구입할 수있는 LogPress 라는 13 달러 플러그인을 사용하며 절대적으로 신이 보낸 것입니다. 플러그인 및 사이트와 관련된 모든 것을 디버깅 할 수 있습니다. Firebug 콘솔 로깅 및 그 이상을 지원합니다. 나는 그것 없이는 살 수 없다, 그것은 내가이 플러그인을 얼마나 사용하는지입니다.

이 플러그인은 아마도 내가 지출 한 최고의 돈일 것이며 Wordpress 플러그인 개발에서 많은 시간을 절약했습니다.


와우, 나는 어떤 것과도 관련이없는 유료 플러그인을 추천하여 다운 투표를 받았다. 손이 좀 겁니까?
드웨인 채 링턴

나는 아래로 투표하는 사람은 아니지만 놀라지 않습니다. 플러그인을 판매하려는 것처럼 단어를 사용하고 있습니다. 추천하는 것은 좋지만 "절대 신이 보낸 것"과 같이 열심히 판매하는 것이 좋습니다. 사람들은 광고를 싫어합니다. 언어를 말로 바꾸면 권장 사항이 적용됩니다.
icc97

0

나는 phpED와 xdebug를 사용하고 있지만 나를 위해 (그리고 다른 사람을 위해 보인다) 플러그인이나 테마 파일을 디버깅하는 것은 불가능합니다! 디버거는 기본 또는 원본 "코어"파일에있는 중단 점에서만 중지됩니다! 아무도 나를 도울 수 있습니까?


0

먼저 define('WP_DEBUG', false);wp-config.php 파일 (대부분의 사람들이 말했듯이)을 관련 프로덕션 사이트 (파일 및 데이터 모두)의 최신 사본 인 로컬 설치에 추가합니다. 이렇게하면 물건을 빠르고 안전하고 개별적으로 만들 수 있지만 플러그인이 실제로 사용될 곳을 하나 이상 잘 반영합니다.

또한 플러그인 에 따라 디버그 바 플러그인 (예 : 과도기)과 함께 디버그 바 플러그인을 추가합니다 .

또한 Firefox 용 Firebug 애드온을 사용하여 HTML, CSS 및 JavaScript 문제를 추적하는 데 도움이되고 레이아웃 이상을 조사하는 데에도 도움이됩니다.

나는 직장과 가정에서 15 년 이상 동안 코딩 (php에서 SQL까지)에 사용 된 UltraEdit을 사용하여 코딩하므로 이것은 나에게 잘 작동하지만 IDE로 평가할만큼 충분하지 않을 수도 있습니다. 많은 사람들. 구문 강조, 자동 완성 및 코드 레이아웃 기능과 오타와 같은 것을 피할 수있는 html 및 CSS 단축키 도구가 있습니다. 대부분이 저에게 친숙 함을 가져다 주는데, 이는 새로운 것에 대한 서두에서 종종 간과되는 중요한 측면입니다. 근육 기억은 코딩에서도 반복성을 도와줍니다.

물론 나는 보통 적절한 예의 다른 탭에서 열린 코덱의 적절한 페이지를 가지고 있습니다.

이것들은 모두 코딩, 파싱, 기능 및 레이아웃 오류를 강조하는 다른 방법으로 도움이되며 코딩 방법이나 아무것도 누락되지 않은 경우에 많은 영향을 미치지 않습니다. 나중에 다시 방문 할 무언가를 실험하거나 작업하는 경우 대부분 무시하거나 비활성화 할 수 있습니다.

아, 그리고 키에 무언가를 확인하는 잘 배치 된 echo 또는 print_r에는 아무런 문제가 없습니다 (완료되면 제거하면).



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.