How to backtrace bug with gdb (GNU Debugger)


เรื่องมันเริ่มที่ Gaim และ Pidgin

ที่จริงที่มาของเรื่องนี้น่าจะมาจากความ noob (newbie) ของผมมากกว่า 555+ เข้าประเด็นเลยดีกว่าครับผม

เรื่องมันเริ่มจากอยู่ดีๆ Gaim กับ Pidgin เกิดไม่สามารถใช้งานได้หลังจาก sign in ไปได้ซักพักก็ปิดเองไปเฉยๆ ลองเข้าไปอ่านใน launchpad หลังจากนั้นก็ลองทำตามดูก็ไม่ได้ผล ลอง Install pidgin แบบ Compile source ด้วย(สด จริงๆ) ก็มีปัญหาเดียวกัน เลยลองเริ่มโปรแกรมบน terminal โดยเริ่มที่ pidgin ก่อนปรากฎว่ามันบอกว่า ... shocked สิครับทีนี้ ทั้ง segmentation fault และcore dump ตายละวามีไรรึเปล่า อ่านดูใน error ดูก็โล่งอกเพราะว่าไม่มีไร(ฮา) เป็นกับโปรแกรมแถมมันบอกด้วยว่า"... no fault on your own." ทีนี้ก็เลยเป็นที่มาของชื่อของบทความนี้ก็เลยว่าจะส่ง bug ไปให้ทาง developer team ก็ไปตาม links ใน pidgin ซึ่งบอกวิธีการ backtrace ไว้พออ่านอย่างละเอียดก็มีแบ่งย่อยไปทาง Ubuntu (เสร็จเรา) ทีนี้ก็เลยทำตามใน reference ของ Ubuntu( ตามอ่านใน Note เอานะครับว่าเอามาจากส่วนไหนของเวปของ Ubuntu)  

 ขั้นตอนนะครับ

  1. Install gdb ก่อนครับก็ $sudo apt-get install gdb
  2. เริ่มการทำงานของโปรแกรมที่มี bug ภายใต้การทำงานของgdb นะครับ
    $gdb <program> 2>&1| tee gdg-<program>.txt // output ลงไฟล์ นะครับ
    (gdb) handle SIG33 pass nostop noprint
    (gdb) set pagination 0
    (gdb) run <arguments, if any>
  3. จากนี้โปรแกรมจะเริ่มทำงานนะครับ แล้วก็ใช้งานโดยให้เกิด bug นะครับ(พูดง่ายๆ ก็ใช้งานให้เหมือนกับครั้งที่เกิด bug นั่นแหละ)
  4. หลังจากเกิด bug หรือ Crash ให้พิมพ์คำสั่งต่อไปนี้
    (gdb) backtrace full
    (gdb) info register
    (gdb) thread apply all backtrace
    (gdb) quit
  5. พอถึงตอนนี้เราจะได้ไฟล์ gda-<program>.txt ซึ่งข้างในบอกรายละเอียดเกี่ยวกับ bug ไว้ซึ่งเราสามารถส่งไปให้ Developers Team ดูได้

ps: bug ที่เกิดขึ้นใน gaim กับ pidgin ผมยังหาวิธีแก้ไม่ได้ใครแก้ได้ก็ช่วยๆ กันหน่อยนะครับ

Note: ที่มา https://wiki.ubuntu.com/Backtrace  

 

คำสำคัญ (Tags): #gdb#bug#ubuntu#debugger
หมายเลขบันทึก: 120664เขียนเมื่อ 19 สิงหาคม 2007 19:10 น. ()แก้ไขเมื่อ 21 มิถุนายน 2012 22:30 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (1)
นึกว่าตาฝาด lol. ผมเปลี่ยนมาใช้ Kopete แทนครับ. :-P
พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท