คุณจะดีบักปลั๊กอินได้อย่างไร?


49

ฉันค่อนข้างใหม่ในการเขียนโปรแกรมเสริมและกำลังประสบปัญหาในการดีบัก

ฉันใช้เสียงสะท้อนมากและเลอะเทอะและน่าเกลียด

ฉันแน่ใจว่ามีวิธีที่ดีกว่าในการทำเช่นนี้บางที IDE กับดีบักเกอร์ที่ฉันสามารถเรียกใช้ทั้งไซต์รวมถึงปลั๊กอินได้


1
ฉันไม่ได้เห็น IDE ที่ใช้ WordPress ทั้งหมดภายใน IDE ... แม้ว่ามันจะยอดเยี่ยม ฉันดีบักปลั๊กอินโดยใช้ WAMP ในเครื่องและโค้ดใน Dreamweaver หากคุณตั้งค่าWP_DEBUGเป็นเท็จตามที่จอห์นแนะนำคุณจะได้รับความคิดที่ดีว่ามีอะไรผิดปกติเกิดขึ้นภายในสคริปต์ของคุณ จากนั้นคุณสามารถแก้ไขใน Dreamweaver กด Ctrl + S แล้ว F5 ในเบราว์เซอร์เพื่อดูการเปลี่ยนแปลงทันที
EAMann

1
@EAMann - อย่าลืมตรวจสอบทั้ง PhpEd (สำหรับ Windows) และ PhpStorm + XDEBUG (สำหรับ Mac, Linux และ Windows)
MikeSchinkel

คำตอบ:


21

ไปลงใน WP-config.php และเปลี่ยนไปdefine('WP_DEBUG', false); define('WP_DEBUG', true);ติดตั้งปลั๊กอินประกาศของ Andrew Nacin ด้วย


12
ฉันจะตรวจสอบบทความอื่น ๆ ของ Nacin เช่นกัน: andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress
kevtrout

ด้วย PHP 5.4+ คุณอาจถูกน้ำท่วมด้วยประกาศ E_STRICT วางส่วนสำคัญนี้ลงในโฟลเดอร์ปลั๊กอินและเปิดใช้งานเพื่อลบประกาศที่เข้มงวดปิดการใช้งานเพื่อกลับสู่บริการปกติของคุณ
webaware

12

หากคุณได้รับข้อผิดพลาดจากการพิมพ์ x-debug คือส่วนขยาย PHP ที่ยอดเยี่ยมซึ่งเพิ่ม backtraces ที่ทันสมัยให้กับ PHP

หากคุณกำลังพยายามหาสิ่งที่เกิดขึ้นในที่ที่ไม่มีข้อผิดพลาดแนวทางที่ฉันชอบคือการกำหนดฟังก์ชั่นที่บันทึกผลลัพธ์ไปยังไฟล์ ดังนั้นฉันจึง plog (ตัวแปร $) และที่ปรากฏในล็อกไฟล์ซึ่งฉันสามารถตรวจสอบได้ สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณพยายามหาสิ่งที่เกิดขึ้นก่อนที่จะเรียกส่วนหัว () หรือสถานการณ์อื่น ๆ ที่คุณไม่สามารถพิมพ์ไปยัง STDOUT


10

ใช้xdebug + NetBeans IDE เมื่อกำหนดค่าอย่างสมบูรณ์ - ซึ่งทำได้ง่าย - คุณสามารถตั้งจุดพักในปลั๊กอินของคุณและดูตัวแปรที่จุดพัก ฉันคิดว่ามันเป็นวิธีที่ดีที่สุดในการดีบักปลั๊กอินหรือแอปพลิเคชัน php สำหรับเรื่องนั้น


6

ฉัน debug วิธีแบบเก่าerror_log()ไอเอ็นจีและvar_dumpไอเอ็นจี ฉันพบว่าเป็นวิธีที่มีประสิทธิภาพที่สุดสำหรับฉันฉันมีฟังก์ชั่น wrapper สองอย่างเพื่อจัดการกับข้อมูลประเภทต่างๆเนื่องจากerror_logอาร์เรย์และวัตถุอาจมีความเจ็บปวด นอกจากนี้การใช้ในอาจเป็นเรื่องยุ่งยากที่จะอ่านเมื่อมันไม่ได้อยู่ในprint_r() <pre>ฉันมี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 หลายตัวฉันก็ตัดสินลงในNotepad ++เก่าแบบธรรมดาพร้อมกับการเน้นสีแบบพิเศษ

ฉันได้ตั้งค่ามาโครเพื่อที่เมื่อฉันกด Shift-Ctrl-X รหัสต่อไปนี้จะได้รับผลลัพธ์เมื่อเคอร์เซอร์อยู่ที่:

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

มันง่าย แต่โดยทั่วไปฉันสามารถตามล่าหาข้อผิดพลาดของฉันได้ถึง 90% ด้วยแมโครนี้และเปิดใช้งาน WP_DEBUG


2
ย้ายที่ดี แป้นลัดในตัวแก้ไขร็อค!
hakre

1
ฉันชอบการส่งออกที่ได้รับจากแทนprint_r($var, true) var_dump
brasofilo

5

ฉันเขียนชั้นเรียนเล็ก ๆ เพื่อสร้าง logfile ซึ่งมีประโยชน์มากเมื่อคุณกำลังดีบักการโทร ajax

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

คุณต้องการทำสิ่งที่ชอบเท่านั้น:

แก้ไขข้อผิดพลาด :: เข้าสู่ระบบ ("นี่คือข้อความดีบัก");

เมื่อบรรทัดนั้นถูกดำเนินการข้อความจะถูกเพิ่มในล็อกไฟล์และหลังจากนั้นคุณสามารถใช้คำสั่ง tail (หากคุณใช้ระบบปฏิบัติการสไตล์ยูนิกซ์)

tail -f mylogfile.log

หากคุณสามารถส่งผ่านไปยังฟังก์ชั่นนี้อาร์เรย์หรือวัตถุเช่นกัน

โปรดทราบว่าคุณต้องการเปลี่ยนบรรทัด 20 สำหรับเส้นทางที่คุณต้องการบันทึกไฟล์บันทึกของคุณ


3

ฉันใช้ Aptane IDE บน Linux และ UltraEdit บน Windows และอันนี้ก็มี PHP-parser นอกจากนี้ผมดูคำแนะนำจากทุก xDebug มีค่าคงที่กำหนดไว้ในWP_DEBUGwp-config.php

ดูโพสต์ของฉันในหัวข้อนี้และรู้สึกอิสระที่จะแสดงความคิดเห็นและให้ข้อเสนอแนะเกี่ยวกับเครื่องมือในการพัฒนาของคุณ


2

ผมขอแนะนำให้ตรวจสอบจากFirePHP คุณสามารถส่งข้อมูลการดีบักไปยัง Firefox ของ Firefox ผ่านส่วนหัว HTTP ซึ่งโดยปกติจะใช้สำหรับการส่งออกการดีบักที่สะอาดขึ้น



1

มี IDE สองตัวที่ฉันสามารถแนะนำได้และฉันใช้ทั้งสองอย่าง: PhpED (Windows เท่านั้น) และPhpStorm + XDEBUG (Mac, Windows และ Linux) ตอนนี้ฉันใช้ Mac แล้วเท่านั้น

พวกเขาทั้งคู่ ROCK! ข่าวดีที่ PhpStorm คือ $ 49 ก่อนเดือนกันยายน 2010 และเพียง $ 99 หลังจากนั้น ถ้าฉันอยู่บน Windows และต้องเลือกอีกครั้งไม่แน่ใจว่าจะเลือกแบบไหน

ตรงไปตรงมาฉันอดไม่ได้ที่จะรู้สึกว่านักพัฒนาปลั๊กอินใด ๆ ที่ไม่ได้ใช้หนึ่งในสองเครื่องมือนี้มีความพิการอย่างรุนแรงโดยเฉพาะอย่างยิ่งหากพวกเขาค่อนข้างใหม่ในการพัฒนาปลั๊กอิน WordPress


1

Krumo - คลาสดีบัก PHP สไตล์

อีกสิ่งที่ดีจริงๆคือคลาส "krumo" php มันนำมาใช้ใน½นาทีและนำเสนอวิธีง่ายๆในการดีบักตัวแปรทุกประเภท:

  • วัตถุ
  • อาร์เรย์
  • สตริง / ลอย / จำนวนเต็ม / ฯลฯ

นอกจากนี้ยังช่วยในเรื่องการเปลี่ยนเส้นทางแสดงคลาสที่โหลดหรือไฟล์ที่รวมและทุกอย่างตามต้องการ

รวมทั้งได้ฟรี!

ดาวน์โหลด

Krumo @sourceforge


0

ฉันใช้ปลั๊กอิน $ 13 เรียกว่าLogPressคุณสามารถซื้อได้ที่ ThemeForest และเป็นระบบส่งของที่แน่นอน คุณสามารถแก้ไขข้อบกพร่องทุกอย่างที่เกี่ยวข้องกับปลั๊กอินและเว็บไซต์ รองรับการบันทึกคอนโซล Firebug และอีกมากมาย ฉันขาดไม่ได้นั่นคือจำนวนฉันใช้ปลั๊กอินนี้

ปลั๊กอินนี้น่าจะเป็นเงินที่ดีที่สุดที่ฉันเคยใช้และประหยัดเวลานับไม่ถ้วนในการพัฒนาปลั๊กอิน Wordpress ของฉัน


ว้าวฉันถูกลดระดับลงเพื่อแนะนำปลั๊กอินที่ต้องชำระซึ่งฉันไม่มีความเกี่ยวข้องใด ๆ เลย? นั่นเป็นของหนัก ๆ
Dwayne Charrington

ฉันไม่ใช่คนลงคะแนน แต่ฉันไม่แปลกใจ คุณกำลังใช้คำราวกับว่าคุณกำลังพยายามขายปลั๊กอิน การแนะนำสิ่งต่าง ๆ เป็นสิ่งที่ดี แต่การขายอย่างหนักเช่น "Absolute God-send" คนเกลียดโฆษณา เพียงแค่ลดทอนภาษาและข้อเสนอแนะจะพูดเอง
icc97

0

ฉันใช้ phpED และ xdebug แต่สำหรับฉัน (และดูเหมือนว่าสำหรับคนอื่น ๆ ) มันเป็นไปไม่ได้ที่จะดีบักปลั๊กอินหรือไฟล์ของธีม! ตัวดีบั๊กจะหยุดที่จุดพักที่อยู่ในไฟล์ "หลัก" หลักหรือดั้งเดิม! ใครช่วยฉันได้บ้าง


0

ประการแรกฉันเพิ่มลงdefine('WP_DEBUG', false);ในไฟล์ wp-config.php (ตามที่คนส่วนใหญ่พูด) ในการติดตั้งในพื้นที่ซึ่งเป็นสำเนาล่าสุดของไซต์ที่เกี่ยวข้อง (ทั้งไฟล์และข้อมูล) สิ่งนี้ทำให้สิ่งต่าง ๆ รวดเร็วปลอดภัยแยกออกจากกัน แต่มีการสะท้อนอย่างน้อยหนึ่งที่ที่ปลั๊กอินจะใช้งานจริง

ฉันยังเพิ่มปลั๊กอินDebug Barพร้อมกับส่วนเสริมบางอย่างของ Debug Bar (ตัวอย่างเช่น Transients) - ตามความเหมาะสมกับปลั๊กอินของคุณ

ฉันยังใช้ Firebug add-on สำหรับ Firefox ซึ่งยอดเยี่ยมสำหรับการช่วยติดตามปัญหา html, css และ JavaScript ยังดีสำหรับการดูเลย์เอาต์ที่แปลก

ฉันใช้รหัส UltraEdit ซึ่งฉันใช้มานานกว่า 15 ปีในการเข้ารหัส (php จนถึง SQL) ทั้งที่ทำงานและที่บ้านและมันใช้งานได้ดีสำหรับฉัน แต่อาจจะไม่พอที่จะให้คะแนนสำหรับ IDE หลายคน มันมีการเน้นไวยากรณ์เสร็จสมบูรณ์โดยอัตโนมัติและคุณสมบัติการจัดวางรหัสและพวงของ html และเครื่องมือทางลัด CSS ซึ่งสามารถช่วยหลีกเลี่ยงการพิมพ์ผิดและเหมือนกัน ส่วนใหญ่ทำให้ฉันคุ้นเคยซึ่งเป็นสิ่งสำคัญที่มักจะมองข้ามในการเร่งการใหม่ หน่วยความจำของกล้ามเนื้อช่วยในการทำซ้ำแม้ในการเข้ารหัส

และแน่นอนฉันมักจะมีบางหน้าที่เหมาะสมจาก codex เปิดในแท็บอื่นในแบบอย่างที่เหมาะสม

ทั้งหมดนี้ช่วยในวิธีที่แตกต่างกันในการไฮไลต์ข้อผิดพลาดในการเข้ารหัสการแยกวิเคราะห์การทำงานและการจัดวางและไม่ยุ่งเกี่ยวกับวิธีที่ฉันเขียนโค้ดหรือหากไม่มีอะไรผิดปกติ ส่วนใหญ่สามารถเพิกเฉยหรือปิดใช้งานได้เล็กน้อยหากคุณกำลังทดลองหรือแก้ไขบางสิ่งที่คุณจะกลับมาใหม่ในภายหลัง

โอ้และไม่มีอะไรผิดปกติกับ echo ที่อยู่ในตำแหน่งที่ดีหรือ print_r เพื่อตรวจสอบสิ่งที่สำคัญ (ตราบใดที่คุณลบพวกเขาเมื่อคุณทำเสร็จแล้ว)


0

ตรวจสอบQuery MonitorรวมกับQuery Monitor Extendสำหรับการดีบักแบบครอบคลุมของ WordPress (ข้อผิดพลาด PHP / ข้อสังเกต / ข้อ จำกัด / คำเตือน, การสืบค้นฐานข้อมูล, เส้นทาง, ค่าคงที่, คำขอ HTTP, ทรานแซคชั่น, ตัวแปรเซสชัน)

ตรวจสอบการลงรายการบัญชีMeta ทั้งหมดและการบันทึกปลั๊กอินใดสำหรับข้อมูลเฉพาะเกี่ยวกับการลงรายการบัญชี


0

PHPStorm และ Xdebug เป็นเกมที่เปลี่ยนแปลงสำหรับฉันสำหรับการพัฒนา WordPress แนะนำเป็นอย่างยิ่งตอนนี้ ด้วยเครื่องมือดีบักแบบอินไลน์


คุณจะตั้งค่าอย่างไร
jgraup

เพียงไปที่เว็บไซต์ความช่วยเหลือของพวกเขา: jetbrains.com/help/phpstorm/2016.2/configuring-xdebug.html
Emanuel Rocha Costa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.