จะเกิดอะไรขึ้นหลังจาก "ubuntu-bug" ได้ทำสิ่งนี้แล้ว?


14

ก่อนหน้านี้คุณจะวิ่งapport-bugหรือubuntu-bugเริ่มรายงานข้อบกพร่อง จากนั้นระบบจะเปิด launchpad ด้วยบัญชีของคุณอัปโหลดข้อมูลที่รวบรวมและให้คุณเพิ่มข้อมูลเพิ่มเติมลงในรายงานข้อผิดพลาด

ตอนนี้เมื่อฉันเรียกใช้gksudo ubuntu-bug(เช่นกับcrash-file เป็นอาร์กิวเมนต์) โต้ตอบข้อผิดพลาดทั่วไปจะปรากฏขึ้น

ป้อนคำอธิบายรูปภาพที่นี่

และนั่นคือทั้งหมด

รายงานถูกส่งไปที่ใด แน่นอนว่าไม่ให้ launchpad เป็นรายงานข้อผิดพลาด (แม้ว่าในสถานการณ์ที่เป็นรูปธรรมผู้คนสามารถส่งรายงานเกี่ยวกับบั๊กนั้นได้)

ดังนั้น: รายงานนี้ถูกส่งไปที่ไหน (และอาจจะ) ฉันจะยังคงรายงานข้อผิดพลาดจากระบบของฉันได้อย่างไร (ทำให้การอัปโหลดไฟล์ที่เกี่ยวข้องง่ายขึ้น)

เป็นไปได้หรือไม่ที่ "ระบบ" ตัดสินใจว่าสิ่งนี้จะซ้ำกับข้อบกพร่องที่มีอยู่แล้วหรือไม่

คำตอบ:


7

ในทางเทคนิคubuntu-bugเพียงบันทึกรายงานข้อขัดข้องในเครื่อง โปรแกรมแยกwhoopsieเฝ้าดูรายงานที่บันทึกไว้และอัปโหลดไปยังฐานข้อมูลส่วนกลางซึ่งมีการจัดกลุ่มโดยอัตโนมัติเพื่อระบุปัญหาที่ครอบคลุม

ข้อมูลที่เป็นผลลัพธ์จะปรากฏบนตัวติดตามข้อผิดพลาดของ Ubuntu :

กราฟแสดงรายงานข้อผิดพลาดใน Ubuntu

แนวโน้มสรุปรวมนั้นเปิดเผยต่อสาธารณชนและนักพัฒนาที่เชื่อถือได้สามารถดูรายละเอียดรายงานได้ รายละเอียดเพิ่มเติมมีอยู่ในอูบุนตูวิกิพีเดีย

ตามค่าเริ่มต้นubuntu-bugจะไม่เปิดบั๊กบน Launchpad สำหรับรายงานข้อขัดข้องในรุ่นที่เสถียร แต่คุณสามารถกำหนดค่าได้หากคุณต้องการ ubuntu-bug /var/crash/foo.crashหลังจากการเปลี่ยนแปลงที่คุณสามารถเปิดข้อผิดพลาดในการรายงานความผิดพลาดที่มีอยู่โดยการทำงาน


3

ข้อมูลหรือรายงานที่รวบรวมได้รับการอัพโหลดไปยังระบบติดตามบั๊ก

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

มันสร้างรายงานความผิดพลาดเริ่มต้นในไฟล์ใน / var / crash / (ชื่อไฟล์ประกอบด้วยจากชื่อของปฏิบัติการที่ผิดพลาดและรหัสผู้ใช้) หากกระบวนการที่ขัดข้องเป็นของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันหรือเป็นกระบวนการของระบบและผู้ใช้เป็นผู้ดูแลระบบภาคผนวกแจ้งผู้ใช้เกี่ยวกับความผิดพลาดและเสนอรายงานปัญหา

หากผู้ใช้ออกจากช่องทำเครื่องหมาย "ส่งรายงานข้อผิดพลาด" เปิดใช้งานApport จะอัปโหลดข้อมูลที่รวบรวมไปยังระบบติดตามบั๊ก หลังจากนั้นจะเปิดหน้าการยื่นข้อผิดพลาดของแพ็คเกจพร้อมชื่อข้อบกพร่องที่เป็นค่าเริ่มต้นและปล่อยให้กระบวนการยื่นข้อผิดพลาดที่เหลือไปยังเว็บ UI

Ubuntu ได้รับรายงานข้อผิดพลาดจำนวนมากทุกวันผ่านระบบติดตามบั๊กของเรา ต้องอ่านประเมินและจัดเรียงสิ่งเหล่านี้เพื่อให้สามารถแก้ไขได้ นี่คือที่เราสามารถใช้ความช่วยเหลือของคุณกับการช่วยเหลือด้วยข้อบกพร่อง สำหรับการแสดงภาพของกระบวนการบั๊ก triage ดู Flow Charts ที่ดีเหล่านี้

รายงานข้อผิดพลาดทุกครั้งเป็นการสนทนากับนักข่าว การติดต่อครั้งแรกที่นักข่าวมักจะมีกับชุมชนอูบุนตูก็คือการทดสอบบั๊กซึ่งพยายามรวบรวมรายงานบั๊กที่สมบูรณ์ เป็นสิ่งสำคัญมากที่เราต้องสร้างความประทับใจที่ดีดังนั้นโปรดสุภาพและพยายามใช้ภาษาอังกฤษที่ดีที่สุดของคุณ

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

ประเภทของแมลง

รายงาน Apport

รายงาน Apport จะรายงานข้อผิดพลาดผ่านทาง Apport report โดยอัตโนมัติ การรายงานบั๊กโดยใช้ Apport เป็นวิธีที่ดีที่สุดในการรายงานข้อผิดพลาดเนื่องจากให้ข้อมูลแก่นักพัฒนาจำนวนมากเกี่ยวกับระบบที่ได้รับผลกระทบ เมื่อใช้ Apport จะต้องใช้ข้อมูลเพิ่มเติมน้อยลงเพื่อเร่งกระบวนการทั้งหมด

คุณสามารถรับรู้ข้อบกพร่องเหล่านี้ได้โดยเพิ่มรายการข้อมูลระบบลงในคำอธิบาย บางโปรแกรมมี hooks สำหรับ Apport เพิ่มข้อมูลเพิ่มเติมเมื่อรายงานข้อผิดพลาด ข้อมูลนี้สามารถพบได้ในสิ่งที่แนบมา

ยืนยันข้อบกพร่องแล้ว

เมื่อข้อผิดพลาดถูกทำเครื่องหมายเป็น 'ยืนยัน' มันยังไม่ได้รับการทดสอบอย่างสมบูรณ์ ข้อผิดพลาดนี้ใกล้เคียงกับการทำเครื่องหมายเป็น 'Triaged' แต่คุณต้องตรวจสอบให้แน่ใจว่าพร้อมสำหรับนักพัฒนาในการแก้ไข

คำขอคุณสมบัติ

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

มีเพียงสมาชิกของทีมควบคุมบั๊กของ Ubuntu เท่านั้นที่สามารถทำได้ หากคุณไม่ได้เป็นสมาชิกคุณจะต้องถามคนที่จะทำเพื่อคุณ วางหมายเลขบั๊กใน # ubuntu-bugs และบอกว่าคุณคิดว่าบั๊กนั้นควรถูกตั้งเป็น 'Wishlist' บางคนจะสังเกตเห็นและตั้งค่าให้คุณแม้ว่าจะไม่จำเป็นต้องใช้ในทันที

มันทำงานอย่างไรภายใน

การสกัดกั้นความผิดพลาด

Apport ใช้ / proc / sys / kernel / core_pattern เพื่อไพพ์ดัมพ์หลักลงใน apport โดยตรง:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$ 

หมายเหตุ: แม้ว่า ulimit จะถูกตั้งค่าเป็นไฟล์หลักที่ปิดใช้งาน (โดยการระบุขนาดไฟล์หลักของศูนย์โดยใช้ ulimit -c 0), apport จะยังคงจับภาพความผิดพลาด สำหรับการดักฟัง Python ขัดข้องจะติดตั้ง a /etc/python*/sitecustomize.pyto call apport ในข้อยกเว้นที่ไม่สามารถจัดการได้

ตัวอย่าง

Apport สามารถจับไฟล์หลักได้หาก PID 1 (Upstart) ตาย:

  1. หากพุ่งพรวดตรวจพบความไม่สอดคล้องภายในก็จะเพิ่มสัญญาณ SIGABRT
  2. ตัวจัดการความผิดพลาดพุ่งพรวดถูกเรียกใช้บน SIGABRT
  3. ตัวจัดการความล้มเหลวพุ่งพรวดส้อมกระบวนการเด็ก
  4. กระบวนการเด็กพุ่งพรวดอีกครั้งยกสัญญาณซึ่งส่งผลให้เด็กออกจากผิดปกติ
  5. เคอร์เนลตรวจพบโปรเซสลูกออกจากสิ่งผิดปกติและเรียก apport โดยไพพ์ไฟล์หลักเพื่อต่อท้ายอินพุตมาตรฐาน (เนื่องจาก / proc / sys / kernel / core_pattern)
  6. apport เขียนไฟล์หลักไปยังดิสก์ใน / var / crash /
  7. PID 1 รอให้ลูกของมันยุติ (ซึ่งจะเกิดขึ้นเฉพาะเมื่อภาคผนวกเสร็จสิ้นการเขียนไฟล์หลัก)
  8. PID 1 ออกแล้ว
  9. ความตื่นตระหนกของเคอร์เนล
  10. ในการบู๊ตครั้งต่อไป Whoopsie จะตรวจจับไฟล์ขัดข้องและประมวลผล

แบ็กเอนด์

เพื่อให้การหน่วงเวลาและผลกระทบของ CPU / IO ต่ำที่สุดเท่าที่จะเป็นไปได้/usr/share/apport/apportรวบรวมเฉพาะข้อมูลที่จะต้องได้รับขณะที่กระบวนการขัดข้องยังคงมีอยู่: ข้อมูลจาก/proc/pidการถ่ายโอนข้อมูลหลักเส้นทางปฏิบัติการและหมายเลขสัญญาณ /var/crash/executable_path.uid.crashรายงานถูกเขียนไปยัง

ส่วนหน้าภาวนา

ใน Gnome ปรับปรุง-แจ้งเก็บนาฬิกา inotify /var/crashบน เมื่อใดก็ตามที่มีสิ่งใหม่มันจะเรียก / usr / share / apport / apport-checkreports หากมีรายงานใหม่จะเรียก / usr / share / apport / apport-gtk ซึ่งเป็นส่วนหน้าที่แสดงในภาพหน้าจอด้านบน

จากนั้นส่วนหน้าจะรวบรวมข้อมูลเพิ่มเติมเช่นเวอร์ชันของแพ็กเกจไฟล์แพ็กเกจ checksums หรือเวอร์ชันของระบบปฏิบัติการและเรียกใช้ hook ของแพ็คเกจที่ตรงกันทั้งหมด หากต้องการปิดใช้งานสิ่งนี้คุณสามารถเรียกใช้ gsettings set com.ubuntu.update-notifier show-apport-crash false (ในฐานะผู้ใช้เดสก์ท็อปทั่วไปของคุณ)

เครื่องมือตรวจสอบอัตโนมัติบน Launchpad

ศูนย์ข้อมูล Canonical เรียกใช้บริการซึ่งจะตรวจสอบข้อบกพร่องด้วย apport โดยอัตโนมัติ โดยการแท็กข้อบกพร่องตามสถาปัตยกรรมใน Launchpad การย้อนกลับจะทำและแท็กจะถูกลบ แท็กที่ใช้คือ need-i386-retrace หรือ need-amd64-retrace ดูประกาศ

Apport Hooks ต่อแพ็คเกจ

เป็นไปได้สำหรับแพ็คเกจที่จะระบุข้อมูลที่รวบรวมจากระบบและรวมอยู่ในรายงานข้อผิดพลาด สิ่งเหล่านี้ทำโดย apport hooks ที่อยู่ในแพ็คเกจ สำหรับตัวอย่างที่มีประโยชน์ดู:

  • source_xorg.py - เพิ่มไฟล์บันทึกเพิ่มเติมและรายละเอียดฮาร์ดแวร์เพื่อรายงานข้อผิดพลาด
  • usplash - ละเว้นการขัดข้องในเส้นทางรหัสที่ระบุ
  • source_totem.py - ถามคำถามของนักข่าวและรวบรวมข้อมูลต่าง ๆ ตามการตอบกลับ

ใน / usr / share / apport / package-hooks นอกจากนี้ยังมีรายการแพคเกจที่ให้ตะขอ apport

หากรายงานข้อขัดข้องหรือข้อผิดพลาดถูกส่งผ่านทาง apport ตะขอที่เกี่ยวข้องจะถูกเรียกใช้โดยอัตโนมัติ หากคุณมีข้อผิดพลาดที่รายงานแล้วซึ่งถูกยื่นโดยไม่มี apport และคุณสนใจข้อมูลจาก hooks เหล่านั้นคุณสามารถขอให้ผู้รายงานข้อผิดพลาดเพื่อใช้ bugnumber ของ apport

ใช้แหล่งที่มาลุค!

  • คุณสามารถดาวน์โหลด upball tarball จากหน้าโครงการ Launchpad หรือ tarball source Ubuntu จากไฟล์เก็บถาวรของ Ubuntu
  • apport ได้รับการพัฒนาด้วย bazaar RCS บน Launchpad หากคุณต้องการมีส่วนร่วมหรือพัฒนาระบบของคุณเองคุณสามารถสร้างสาขาของคุณเองด้วย bzr get lp: apport สำหรับ trunk หรือ debcheckout -a apport สำหรับสาขาบรรจุภัณฑ์ของ Ubuntu

แผนการในอนาคต

การปรับปรุงประสิทธิภาพต่าง ๆ เครื่องมือที่ดีกว่าในการทำงานกับรายงานและการรวมภาษาเพิ่มเติม (การติดตามสแต็กโมโน / Python ข้อความยืนยัน ฯลฯ ) ดูข้อกำหนดที่เกี่ยวข้อง

แหล่งที่มา: Apport , How To Triageและวิธีเปิดใช้ Apport


นี่เป็นกระบวนการที่ฉันคุ้นเคย - แต่ตอนนี้ประโยคสุดท้ายดูเหมือนจะไม่นำมาใช้อีกต่อไป - ไม่มี UI ของเว็บเปิดขึ้น ฉันแก้ไขคำถามของฉันด้วยแนวคิดที่คำตอบของคุณนำมาสู่ความคิดของฉัน
guntbert

ฉันคิดว่า Web UI ไม่ได้อยู่ในระบบ (ไม่ใช่ที่ด้านผู้ใช้) แต่ออนไลน์ แต่ฉันไม่แน่ใจ
มิทช์

แหล่งที่มานี้ได้รับการปรับปรุงล่าสุดในเดือน พ.ย. 2012 ข้อมูลที่อาจจะล้าสมัย ..
guntbert

ฉันเห็นสิ่งนั้น แต่ฉันคิดว่าเนื่องจากไม่มีอะไรเปลี่ยนแปลงฉันไม่จำเป็นต้องอัปเดตฉันเดา ตอนนี้อาจเกิดขึ้นเมื่อ 13.10 มีการเปลี่ยนแปลงเนื่องจากจะเป็นอุปกรณ์หลายเครื่อง Apport ล่าสุดคือ2.61ลงวันที่ 10 ตุลาคม 2555
มิชชัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.