*** เนื่องจากว่าปัจจุบัน x-debug มันออกเวอร์ชั่นใหม่แล้ว และเมื่อท่านทำตามวิธีด้านล่าง ก้อปปี้ phpinfo ไปวาง มันจะบอกว่าไม่ซัพพอร์ต ให้ท่านอ่านบทความนี้ของผมอีก 1 บทความนะครับ ผมเขียนแสดงที่ดาวน์โหลดไว้ให้ท่านแล้ว แต่ใช่ว่าบทความด้านล่างนี้จะไม่มีประโยชน์และใช้ไม่ได้นะครับ มันยังใช้ได้เหมือนเดิม
http://www.select2web.com/netbean/x-debug-netbean.html
ชาวเราเหล่าผู้พัฒนาโปรแกรมด้วยภาษา PHP ยามเหลียวมองไปดูเพื่อนบ้านอย่าง asp.net มันช่างน่าน้อยเนื้อต่ำใจเสียนี่กะไร
asp.net มีเครื่องมือชั้นยอดไว้สำหรับสร้างแอพ ชุดเครื่องมือจากเฮียบิลมาพร้อมคำสั่งดีบักที่ทรงประสิทธิภาพ ทำให้การเขียนโปรแกรมเป็นไปอย่างรวดเร็ว หาที่ผิดพลาดของโปรแกรมได้ง่าย อยากให้หยุดโปรแกรมตรงไหนเพื่อตรวจสอบค่าตัวแปร ก็เพียงแค่เซ็ต break point แล้วเล่นโปรแกรมไปตามปกติ เมื่อโปรแกรมรันมาถึงจุดที่มาร์คไว้ มันก็หยุด เราก็ทำการชำแหละตัวแปร
PHP รึ เซ็งหง่าว ต้องประยุกใช้คำสั่งเอาเองเพื่อทำการดีบักโปรแกรม จนผมต้องเขียนบทความรวบรวมคำสั่งเหล่านั้นไว้ให้อ่านกันเมื่อเร็วๆนี้ คำสั่งสำหรับดีบัก PHP
แต่แล้วเมื่อผมได้เจอกับ x-debug (อันที่จริงผมเจอมันนานแล้วล่ะ แต่ไม่รู้วิธีใช้) และใช้มันร่วมกับ Netbean 7.0 ผมก็มองเห็นสวรรค์รำไร อย่างกะเด็กดมกาว
x-debug นั้นมันจะช่วยให้ Netbean 7.0 สามารถทำการดีบักโปรแกรมได้ใกล้เคียงกับ วิชวลสตูดิโอ ของทางฝั่งไมโครซอฟต์ มาดูวิธีกันเถอะครับ ผมเชื่อว่าท่านที่ใช้ Netbean 7.0 เป็นเครื่องมือพัฒนา PHP อยู่แล้ว จะต้องหลงรักเข้าเต็มปอด
วิธีการจะแบ่งออกเป็น 2 ช่วง
1. ติดตั้งไลบรารี x-debug เข้าไปเป็นส่วนหนึ่งของตัวประมวลผล PHP
2. ตั้งค่าใน Netbean 7.0 เล็กน้อย
(optional) ทดสอบดีบักโค้ด PHP
ติดตั้งไลบรารี x-debug
1. เข้าไปที่เว็บไซต์ http://xdebug.org/find-binary.php หน้านี้จะเป็นวิซาดคอยช่วยเลือกไฟล์ที่ท่านจะต้องดาวน์โหลด และให้คำแนะนำ (แต่ตอนนี้มันเป็นแค่ชองป้อนข้อมูลว่างๆ ขาวๆ) ก่อนอื่นเลยท่านจะต้องก้อปปี้ข้อความที่ได้จากคำสั่ง phpinfo() มาวางในนี้แล้วกดปุ่ม Analyse my phpinfo() output เพื่อให้มันช่วยวิเคราะห์ว่าเราควรจะต้องดาวน์โหลดไฟล์ x-debug ตัวไหน เวอร์ชั่นอะไร ไปติดตั้ง เพราะแต่ละเครื่องสภาพแวดล้อมในการพัฒนา PHP ไม่เหมือนกัน ถ้าท่านไม่รู้ว่า phpinfo() เขียนยังไง ให้ไปอ่านบทความผมที่ http://www.select2web.com/php/how-to-check-php-version.html
เมื่อท่านรันคำสั่ง phpinfo() แล้วให้ ctrl+a ก้อปปี้ล่อข้อความทั้งหมดมาเลย โดยไม่ต้องสนใจว่ามันจะมีอะไรบ้างอยู่ข้างใน เอามาวางในช่องว่างๆนั่นแหละแล้วกดปุ่ม Analyse my phpinfo() output
2. ดาวน์โหลดไฟล์ที่เขาให้ลิ้งก์มา
3. ทำตามคำแนะนำของเขาข้อสอง คือเอาไฟล์ที่ดาวน์โหลดมาไปเก็บไว้ที่ C:\AppServ\php5\ext
4. สร้างโฟลเดอร์เปล่าๆชื่อ tmp ไว้ที่ C:\AppServ
5. เปิดไฟล์ php.ini ขึ้นมา เอาคำสั่งด้านล่างไปเพิ่มบรรทัดล่างสุด มันคือเอาไปต่อท้ายนั่นแหละ
[XDebug] ; Only Zend OR (!) XDebug zend_extension_ts = C:\AppServ\php5\ext\php_xdebug-2.1.1-5.2-vc6.dll xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 ; Port number must match debugger port number in NetBeans IDE Tools > Options > PHP xdebug.remote_handler=dbgp xdebug.profiler_enable=1 xdebug.profiler_output_dir="C:\AppServ\tmp" |
แก้บรรทัด ให้เป็นไปตามคำแนะนำข้อสามของเขาด้วย
zend_extension_ts = C:\AppServ\php5\ext\php_xdebug-2.1.1-5.2-vc6.dll |
6. เสร็จเรียบร้อย บันทึก แล้วก็รีสตาร์ท apache ซะ ถ้าทำไม่เป็นไปอ่านบทความนี้ วิธีรีสตาร์ท apache เพื่อความชัวให้ลองรันคำสั่ง phpinfo() ดู น่าจะเห็นว่า x-debug ติดตั้งเรียบร้อยแล้ว
ตั้งค่าใน Netbean 7.0
1. ไปที่ Tools > Options
2. ไปที่แท็บ PHP ติ๊กเครื่องหมายถูกหน้า Stop at First Line ออก เสร็จแล้ว OK ซะ เพื่อทำการบันทึก
ทดสอบดีบักโค้ด PHP
1. เปิด netbean ขึ้นมา สร้างไฟล์ชื่อ test-debug.php
2. ก้อปปี้โค้ดด้านล่างไปวางในไฟล์
function WorkingDays($year, $month, $day) { if (!$year) $year = date('Y'); if (!$month) $month = date('m'); if (!$day) $day = date('d'); //create a start and an end datetime $startdate = strtotime($year . '-' . $month . '-01'); $enddate = strtotime($year . '-' . $month . '-' . $day); $currentdate = $startdate; while ($currentdate <= $enddate) { //if not Saturday or Sunday, +1 if (!((date('D', $currentdate) == 'Sat') || (date('D', $currentdate) == 'Sun') )) { $return = $return + 1; } $currentdate = strtotime('+1 day', $currentdate); } //end date walk loop //return the number of working days return $return; } echo WorkingDays(2011,4,30); |
3. ทำการเซ็ต break point โดยการคลิกลงไปที่เลขบรรทัด อยากให้โปรแกรมหยุดที่บรรทัดไหนก็ คลิกตัวเลขบรรทัดนั้น แล้วทั้งบรรทัดก็จะถูกคาดแดงไว้ ไม่ต้องห่วงโค้ดไม่ได้รับผลกระทบใดๆ
4. ไปที่เมนู Debug > Debug File หรือจะกดปุ่ม Ctrl+Shift+F5 ก็ได้
โปรแกรมมันจะรันไฟล์ PHP ของเราแล้วก็มาหยุดอยู่ตรง break point
5. ลองเอาเมาส์ชี้ไปที่ตัวแปรต่างๆ มันจะขึ้นทูลทิปแสดงค่าที่อยู่ภายในให้ท่านเห็นอย่างละเอียด ทุกตัว
เครื่องมือชุดนี้สำหรับการดีบัก ลองคลิกเล่นดูก็จะเข้าใจเองว่ามันทำงานยังไง
ได้เครื่องมือ x-debug ไปแล้วก็อย่าดีใจจนร้องแรกแหกกระเชอ เป็นตุ๊ดแตกล่ะ อายข้างห้องเขา
**** เพิ่มเติมเมื่อ 01-02-2556
ตอนนี้ x-debug มันออกเวอร์ชั่นใหม่แล้ว แต่มันจะใช้ไม่ได้กับบางคน (ซึ่งทำตามข้างบนแล้วมันบอกอะไรสักอย่างไม่ซัพพอร์ตๆ) ผมก็เจอ ให้ไปอ่านบทความ http://www.select2web.com/netbean/x-debug-netbean.html เพิ่มเติมครับผม ผมเขียนไว้แล้ว
ddd says:
13/09/2554 at 13/09/2554
ชอบสไตล์บทความท่าน กด like ให้เลย
ankainjd says:
28/05/2557 at 28/05/2557
ลองดูแล้วครับ ผมใช้ Net Bean 7.4 Set ค่าใน php.ini ดังนี้
[XDebug]
zend_extension = “D:\xampp\php\ext\php_xdebug.dll”
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = “D:\xampp\tmp”
xdebug.profiler_output_name = “cachegrind.out.%t-%s”
xdebug.remote_enable = 1
xdebug.remote_handler = “dbgp”
xdebug.remote_host = “127.0.0.1”
xdebug.trace_output_dir = “D:\xampp\tmp”
xdebug.remote_port = 9000
พอกด debug แล้วขึ้น
“Port 9000 is already occupied. Configure the IDE to use another port?”
postmaster says:
09/10/2557 at 09/10/2557
Netbeans 8.0.1 ไปที่ Tools > Options แล้วไม่มีตัวเลือก PHP พอมีคำแนะนำบ้างหรือไม่
postmaster says:
09/10/2557 at 09/10/2557
”
postmaster
10.9.2014
Netbeans 8.0.1 ไปที่ Tools > Options แล้วไม่มีตัวเลือก PHP พอมีคำแนะนำบ้างหรือไม่
”
ใช้งานได้แล้วล่ะ ต้องตั้งค่าให้โหลดปลักอิน php เพิ่มเข้าไป แต่ยังไม่ค่อยเข้าใจวิธีใช้งานจึงคิดว่ามันดูวุ่นวายไปหน่อย