xdebug |
|
ติดตั้ง xdebug และการใช้ netbean ในการ debug php
อ้างอิงจาก เว็บของ netbean.org , xdebug.org ในเขียน php เคยเบื่อบ้างหรือไม่ ที่จะต้องตรวจสอบโค้ด หรือ ตรวจสอบความเร็วโค้ด PHP ที่เราเขียน ซึ่งมักจะมีขั้นตอนที่วุ่นวาย ตั้งแต่นั่งไล่ดูโค้ด ตรวจสอบตรรกะ ใส่ฟังก์ชั่นคำนวนเวลาไว้ที่หัวและท้ายของ file ทีละ file พอจะไม่ใช้ทีหนึ่งก็ต้องลบออกทีละ file เวลาที่โปรแกรมทำงานผิดพลาด ก็ต้องนั้งใล่ bug กันหัวแตก ใส่ code ตรวจสอบเข้าไปอีก เสียเวลามาก เลยมีคนที่คิดค้นเครื่องที่มีชื่อว่า xdebug ใช้สำหรับการตรวจสอบ code php ระหว่างที่โปรแกรมกำลังทำงาน และมีความสามารถอื่น ๆ อีกหลายอย่าง ในเว็บจะมีวิธีการ ติดตั้ง xdebug ใน windows , mac และ linux แต่ผมอธิบายสำหรับการติดตั้งลง windows อย่างเดียว เพราะไม่ได้ลง linux และไม่มีเครื่อง mac ก่อนอื่นให้ไป download xdebug ที่เว็บ http://xdebug.org/download.php อ๊ะมันมีหลาย version แล้วจะ download version อะไรดี ? ก่อนอื่นเราต้องตรวจสอบ version ของ php ที่อยู่ในเครื่องเราก่อน สร้าง file พิมพ์ http://localhost/phpinfo.php เปิดดูที่เว็บ browser จะเห็นข้อความประมาณนี้ ตรวจสอบ version ดู จากรูปจะเป็น php verstion 5.2.6-3 และสิ่งที่จะต้องดูต่อไปคือ Thread Safety สรุปคือตอนนี้เราต้องการ xdebug สำหรับ php 5.2 และไม่ต้องการ Thread Safety ในภาพมันเป็นระบบ linux แต่้ถ้าเป็นระบบ windows จะเป็น Thread Safety 1 ให้ download xdebug มา 2 copy php_xdebug-2.1.0-5.2-vc6.dll ไปที่ foloder ที่เก็บ php extension ของผมจะเป็น C:\AppServ\php5\ext\ 3 เปิด php.ini โดยส่วนใหญ่จะอยู่ใน c:\windows\php.ini เพิ่มสิ่งนี้ไปที่ท้ายบรรทัด [XDebug] ;; Only Zend OR (!) XDebug zend_extension_ts = "C:\AppServ\php5\ext\php_xdebug-2.1.0-5.2-vc6.dll" xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.profiler_enable = 1 xdebug.profiler_output_dir = "./" หมายเหตุ xdebug.remote_port ต้องเป็น port ที่ตรงกับ debugger port ของ netbean ตรวจสอบได้จาก tools->options->php แต่โดยปกติจะเป็น port 9000 ถ้าเป็น php ตั้งแต่ version 5.3 ขึ้นไปให้เปลี่ยน zend_extension_ts เป็น zend_extension 4. เปิด netbean ไปที่ tools->options->php ตรง session id กำหนด netbeans-xdebug 5. restart server เปิด http://localhost/phpinfo.php มองหา xdebug ข้างล่างถ้ามีรูปนี้แสดงว่าใช้ได้แล้ว ที่มา : http://www.zone-it.com/b47/182216 |
[ ความเห็นที่ 1]
ชาวเราเหล่าผู้พัฒนาโปรแกรมด้วยภาษา 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.01. ไปที่ Tools > Options
2. ไปที่แท็บ PHP ติ๊กเครื่องหมายถูกหน้า Stop at First Line ออก เสร็จแล้ว OK ซะ เพื่อทำการบันทึก ทดสอบดีบักโค้ด PHP1. เปิด 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 ก็ได้
5. ลองเอาเมาส์ชี้ไปที่ตัวแปรต่างๆ มันจะขึ้นทูลทิปแสดงค่าที่อยู่ภายในให้ท่านเห็นอย่างละเอียด ทุกตัว
เครื่องมือชุดนี้สำหรับการดีบัก ลองคลิกเล่นดูก็จะเข้าใจเองว่ามันทำงานยังไง |