Điều gì xảy ra sau khi `ubfox-bug` hoàn thành công việc của nó?


14

Cho đến một thời gian trước, bạn đã chạy apport-bughoặc ubuntu-bugđể bắt đầu báo cáo một lỗi. Hệ thống sau đó sẽ mở launchpad bằng tài khoản của bạn, tải lên thông tin được thu thập và cho phép bạn thêm thông tin vào báo cáo lỗi.

Bây giờ khi tôi chạy gksudo ubuntu-bug(ví dụ với crashđối số -file là đối số), hộp thoại lỗi phổ biến xuất hiện

nhập mô tả hình ảnh ở đây

và đó là tất cả.

Báo cáo được gửi đến đâu? Chắc chắn không để launchpad như một báo cáo lỗi (mặc dù trong tình huống cụ thể mọi người đã có thể nộp báo cáo về lỗi đó).

Vì vậy: báo cáo này được gửi đến đâu (và chỉ có thể) làm thế nào tôi vẫn có thể gửi báo cáo lỗi từ hệ thống của mình (giúp tải lên các tệp liên quan dễ dàng hơn nhiều)

Có thể là "hệ thống" đã quyết định rằng đây sẽ là một bản sao của một lỗi đã tồn tại?

Câu trả lời:


7

Về mặt kỹ thuật, ubuntu-bugchỉ cần ghi lại báo cáo sự cố cục bộ. Một chương trình riêng biệt whoopsie, theo dõi các báo cáo được ghi lại và tải chúng lên cơ sở dữ liệu trung tâm, nơi chúng được tự động nhóm để xác định các vấn đề bao quát.

Dữ liệu kết quả được hiển thị trên trình theo dõi lỗi Ubuntu :

Biểu đồ báo cáo lỗi trong Ubuntu

Xu hướng tổng hợp có sẵn công khai và chi tiết báo cáo có sẵn cho các nhà phát triển đáng tin cậy. Thêm chi tiết có sẵn trên Ubuntu Wiki .

Theo mặc định, ubuntu-bugkhông mở các lỗi trên Launchpad để báo cáo sự cố trong các bản phát hành ổn định, nhưng bạn có thể định cấu hình nó nếu muốn. Sau khi thực hiện thay đổi đó, bạn có thể mở một lỗi cho báo cáo sự cố hiện có bằng cách chạy ubuntu-bug /var/crash/foo.crash.


3

Thông tin hoặc báo cáo được thu thập được tải lên hệ thống theo dõi lỗi.

Nếu bất kỳ quá trình nào trong hệ thống bị chết do tín hiệu thường được gọi là 'sự cố' (vi phạm phân đoạn, lỗi bus, ngoại lệ điểm trôi nổi, v.v.), hoặc ví dụ, một ứng dụng Python được đóng gói sẽ tạo ra một ngoại lệ chưa được xử lý, phụ trợ apport được tự động gọi.

Nó tạo ra một báo cáo sự cố ban đầu trong một tệp trong / var / crash / (tên tệp được tạo từ tên của tệp thực thi bị lỗi và id người dùng). Nếu quy trình gặp sự cố thuộc về người dùng hiện đang đăng nhập hoặc thuộc về quy trình hệ thống và người dùng là quản trị viên, apport sẽ thông báo cho người dùng về sự cố và đề nghị báo cáo sự cố.

Nếu người dùng rời khỏi hộp kiểm "Gửi báo cáo lỗi" được bật, Apport sẽ tải thông tin được thu thập lên hệ thống theo dõi lỗi. Sau đó, nó mở trang nộp lỗi của gói với tiêu đề lỗi mặc định hợp lý và để phần còn lại của quá trình nộp lỗi vào giao diện người dùng web.

Ubuntu nhận được một số lượng lớn các báo cáo lỗi mỗi ngày thông qua hệ thống theo dõi lỗi của chúng tôi. Mỗi một trong số này cần phải được đọc, đánh giá và sắp xếp để có thể sửa nó. Đây là nơi chúng tôi có thể sử dụng sự trợ giúp của bạn với Helping With Bugs. Để thể hiện trực quan về quá trình xử lý lỗi, hãy xem các Biểu đồ luồng đẹp này.

Mỗi báo cáo lỗi là một cuộc trò chuyện với phóng viên. Liên hệ đầu tiên mà bất kỳ phóng viên nào thường có với cộng đồng Ubuntu là thông qua bộ xử lý lỗi, người cố gắng đưa ra một báo cáo lỗi hoàn chỉnh. Điều rất quan trọng là chúng tôi tạo ấn tượng tốt, vì vậy hãy lịch sự và cố gắng sử dụng tiếng Anh tốt nhất của bạn.

Làm việc với các lỗi đơn giản, chưa được xử lý là một cách tốt để bắt đầu và làm quen với quy trình xử lý vì bạn sẽ phải xử lý mọi khía cạnh của vòng đời của lỗi. Phần lỗi Unriaged giải thích nơi để tìm thấy chúng.

Các loại lỗi

Báo cáo báo cáo

Báo cáo Apport là các lỗi được báo cáo thông qua chương trình báo cáo lỗi tự động Apport. Báo cáo lỗi bằng Apport là cách báo cáo lỗi ưa thích vì nó cung cấp cho các nhà phát triển nhiều thông tin về hệ thống bị ảnh hưởng. Khi Apport được sử dụng, cần ít thông tin bổ sung hơn, tăng tốc toàn bộ quá trình.

Bạn có thể nhận ra những lỗi này bằng cách thêm danh sách thông tin hệ thống vào phần mô tả của chúng. Một số chương trình có móc cho Apport, thêm thông tin khi báo cáo lỗi. Thông tin này thường có thể được tìm thấy trong các tệp đính kèm.

Xác nhận lỗi

Khi một lỗi được đánh dấu là 'Xác nhận', nó chưa được xử lý đầy đủ. Lỗi này rất gần với việc được đánh dấu là 'Đã xử lý', nhưng bạn cần chắc chắn rằng nó đã sẵn sàng để các nhà phát triển sửa chữa.

Yêu cầu tính năng

Nếu báo cáo lỗi thực sự là một yêu cầu tính năng, có hai khả năng. Nếu cải tiến được yêu cầu là nhỏ và được xác định rõ và / hoặc đề xuất liên quan đến một dự án ngược dòng, thì Tầm quan trọng của lỗi sẽ được đặt thành 'Danh sách mong muốn'. Khi báo cáo hoàn tất, trạng thái sẽ được đặt thành 'Triaged'.

Chỉ các thành viên của nhóm Kiểm soát lỗi Ubuntu mới có thể làm như vậy. Nếu bạn không phải là thành viên, bạn sẽ phải nhờ ai đó làm việc đó cho bạn. Dán số lỗi trong # ubfox-bug và nói rằng bạn nghĩ lỗi nên được đặt thành 'Danh sách mong muốn'. Ai đó sẽ chú ý và thiết lập nó cho bạn, mặc dù không nhất thiết phải ngay lập tức.

Làm thế nào nó hoạt động nội bộ?

Đánh chặn sự cố

Apport sử dụng / Proc / sys / kernel / core_potype để chuyển trực tiếp kết xuất lõi vào apport:

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

Lưu ý: ngay cả khi ulimit được đặt thành các tệp lõi bị vô hiệu hóa (bằng cách chỉ định kích thước tệp lõi bằng 0 bằng ulimit -c 0), apport vẫn sẽ ghi lại sự cố. Để chặn Python gặp sự cố, nó cài đặt một /etc/python*/sitecustomize.pylệnh gọi apport trên các ngoại lệ chưa được xử lý.

Thí dụ

Apport thậm chí có thể chụp các tập tin lõi nếu PID 1 (Upstart) chết:

  1. Nếu Upstart phát hiện sự không nhất quán bên trong, nó sẽ tăng tín hiệu SIGABRT.
  2. Trình xử lý sự cố Upstart được gọi trên SIGABRT.
  3. Trình xử lý sự cố khởi động tạo ra một quá trình con.
  4. Quá trình trẻ em mới bắt đầu phát lại tín hiệu dẫn đến việc trẻ thoát ra bất thường.
  5. Hạt nhân phát hiện tiến trình con đã thoát một cách bất thường và gọi apport, chuyển tập tin lõi đến đầu vào tiêu chuẩn (do / Proc / sys / kernel / core_potype).
  6. apport ghi tập tin lõi vào đĩa trong / var / crash /.
  7. PID 1 chờ cho con của nó kết thúc (điều này chỉ xảy ra khi apport đã viết xong tệp lõi).
  8. Lối ra 1
  9. hoảng loạn hạt nhân.
  10. Trong lần khởi động tiếp theo, Whoopsie sẽ phát hiện tệp sự cố và xử lý nó.

Cuối tuần

Để giữ độ trễ và tác động của CPU / IO càng thấp càng tốt, /usr/share/apport/apportchỉ thu thập dữ liệu phải thu được trong khi quá trình bị hỏng vẫn tồn tại: thông tin từ /proc/pid, bãi chứa lõi, đường dẫn thực thi và số tín hiệu. Báo cáo được viết cho /var/crash/executable_path.uid.crash.

Cầu khẩn

Trong Gnome, trình thông báo cập nhật sẽ giữ đồng hồ inotify /var/crash. Bất cứ khi nào có một cái gì đó mới, nó gọi / usr / share / apport / apport-checkreports. Nếu có báo cáo mới, nó gọi / usr / share / apport / apport-gtk, đây là giao diện được hiển thị trong ảnh chụp màn hình ở trên.

Frontend sau đó thu thập thông tin bổ sung như phiên bản gói, tổng kiểm tra gói hoặc phiên bản HĐH và gọi tất cả các móc gói phù hợp. Để vô hiệu hóa điều này, bạn có thể chạy gsinstall set com.ubfox.update-notifier show-apport-crash false (như người dùng máy tính để bàn thông thường của bạn).

Retracer dựa trên Launchpad

Trung tâm dữ liệu Canonical chạy một dịch vụ tự động truy xuất các lỗi với apport. Bằng cách gắn thẻ các lỗi theo kiến ​​trúc trong Launchpad, việc truy xuất sẽ được thực hiện và thẻ sẽ bị xóa. Các thẻ được sử dụng là cần-i386-lấy hoặc cần-amd64-lấy. Xem thông báo.

Móc Apport mỗi gói

Các gói có thể chỉ định thông tin được thu thập từ hệ thống và được bao gồm trong báo cáo lỗi. Chúng được thực hiện bởi các móc apport có trong các gói. Đối với một số ví dụ hữu ích xem:

  • source_xorg.py - thêm các tệp nhật ký và chi tiết phần cứng bổ sung vào các báo cáo lỗi
  • usplash - bỏ qua sự cố trong đường dẫn mã cụ thể
  • source_totem.py - hỏi các câu hỏi của phóng viên và thu thập thông tin khác nhau dựa trên các câu trả lời

trong / usr / share / apport / gói-hook. Ngoài ra còn có một danh sách các gói cung cấp móc apport.

Nếu một báo cáo sự cố hoặc lỗi được gửi qua apport, các hook liên quan sẽ được chạy tự động. Nếu bạn có một lỗi đã được báo cáo đã được gửi mà không có apport và bạn quan tâm đến thông tin từ các hook đó, bạn có thể yêu cầu phóng viên lỗi sử dụng bugn-collnumber.

Sử dụng nguồn, Luke!

  • Bạn có thể tải xuống tarball ngược dòng từ trang dự án Launchpad hoặc tarball nguồn Ubuntu từ kho lưu trữ Ubuntu.
  • apport được phát triển với RCS bazaar trên Launchpad. Nếu bạn muốn đóng góp cho nó hoặc phát triển hệ thống của riêng bạn dựa trên nó, bạn có thể lấy chi nhánh của riêng mình với bzr get lp: apport cho thân cây, hoặc gỡ lỗi - một apport cho chi nhánh đóng gói Ubuntu.

Các kế hoạch trong tương lai

Nhiều cải tiến về hiệu suất, các công cụ tốt hơn để làm việc với các báo cáo và tích hợp nhiều ngôn ngữ hơn (dấu vết ngăn xếp Mono / Python, thông báo xác nhận, v.v.) Xem thông số kỹ thuật có liên quan.

Nguồn: Apport , Cách xử lýCách bật Apport


Đây là quá trình tôi đã quen với - nhưng bây giờ câu cuối cùng dường như không áp dụng nữa - không có giao diện người dùng web nào mở ra. Tôi sửa đổi câu hỏi của tôi với một ý tưởng câu trả lời của bạn mang đến trong tâm trí của tôi.
guntbert

Tôi nghĩ rằng giao diện người dùng web không phải là cục bộ (không phải ở phía người dùng), nhưng trực tuyến, nhưng tôi không chắc chắn.
Mitch

Nguồn này được cập nhật lần cuối vào tháng 11 năm 2012. Thông tin có thể bị lỗi thời ..
guntbert

Tôi đã thấy điều đó, nhưng tôi nghĩ rằng vì không có gì thay đổi, tôi không cần phải cập nhật. Bây giờ có lẽ khi 13.10 xuất hiện, sẽ có thay đổi vì nó sẽ là đa thiết bị. Apport mới nhất là 2,61 , ngày 10 tháng 10 năm 2012.
Mitch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.