Làm thế nào chúng ta có thể theo dõi các vấn đề của các chương trình bị lỗi trong Linux?


12

Nếu một ứng dụng gặp sự cố trong Windows, chúng ta có thể kiểm tra Trình xem sự kiện trong các công cụ Quản trị để xem những gì đã bị lỗi. Đôi khi nó có thông tin hữu ích mà người khác không có, nhưng đó là một sự khởi đầu.
Trong linux nếu một ứng dụng (bất kỳ) gặp sự cố, làm thế nào người ta bắt đầu theo dõi những gì đã xảy ra?
Có ví dụ như một số nhật ký trung tâm hoặc một cái gì đó tương tự?


2
Cách gỡ lỗi tiêu chuẩn của loại điều này là khởi chạy ứng dụng có vấn đề từ thiết bị đầu cuối theo cách thủ công. Bằng cách đó bạn có thể thấy bất kỳ thông báo lỗi được in.
terdon

2
Các phiên bản 64 bit của Linux sẽ ghi lại một mô tả ngắn về một quá trình bị lỗi (một lỗi đã chết do tín hiệu) /var/log/syslog. Linux cung cấp một cách để một daemon được thông báo về các sự cố trong quá trình. Ubuntu của apport và Red Hat của abrt sử dụng này để cung cấp tập trung các cơ sở khai thác gỗ và báo cáo thế hệ mới. Nói chung, một kết xuất lõi được lưu để bạn có thể gọi trình gỡ lỗi trên chương trình bị lỗi.
Đánh dấu Plotnick

Tôi đã nêu lên câu hỏi này, nhưng OP dường như không muốn giúp đỡ cộng đồng bằng cách chấp nhận, hoặc đăng câu trả lời, vì vậy tôi sẽ tìm thấy một câu hỏi tương tự chấp nhận câu trả lời và nêu lên rằng, với hy vọng rằng nó sẽ vươn lên dẫn đầu về kết quả tìm kiếm và giúp đỡ những người tìm kiếm trong tương lai
Mawg nói rằng phục hồi Monica

Câu trả lời:


13

Có ví dụ như một số nhật ký trung tâm hoặc một cái gì đó tương tự?

Nơi bình thường cho nhật ký hệ thống là /var/log/. Những gì được đặt trong mỗi bản ghi phụ thuộc vào cấu hình nhật ký hệ thống, nhưng thông thường mọi thứ trừ thông tin đăng nhập /var/log/syslog.

Điều này không đảm bảo rằng các ứng dụng riêng lẻ sẽ để lại bất kỳ manh mối nào trong trường hợp xảy ra sự cố. Nhưng chúng, hoặc vỏ, có thể sẽ nhổ thứ gì đó vào luồng lỗi tiêu chuẩn / lỗi tiêu chuẩn và nếu bạn chạy một ứng dụng rắc rối ở phía trước từ một thiết bị đầu cuối, bạn sẽ có thể thấy nội dung đó.


Những gì bạn nên tìm kiếm trong /var/log? Tệp nhật ký nào? Có một số quy ước?
Jim

2
Nếu bạn có thể làm cho sự cố xảy ra, hãy làm như vậy, sau đó xem tệp nào dưới / var / log được thay đổi gần đây nhất. Với ls -lart, tập tin cuối cùng trong danh sách là thay đổi gần đây nhất.
Devon_C_Miller

Có quy ước s - linux không đồng nhất hơn nhiều so với windows. Syslog đề cập đến bộ ghi hệ thống, nhưng không có triển khai chung và các biến thể sau đó có thể được cấu hình theo các cách khác nhau. Logic chung là các tin nhắn được gửi đến syslog bởi ứng dụng và các tin nhắn này sau đó được sắp xếp thành các tệp khác nhau. Như đã đề cập, thông thường mọi thứ kết thúc /var/log/syslog, nhưng các bản phân phối khác nhau làm mọi thứ khác nhau. Nếu bạn biết bạn đang sử dụng syslog nào, bạn có thể kiểm tra cấu hình của nó để xác định điều này.
goldilocks

6

Trên Ubuntu segfaults được viết tại /var/log/kern.log. Tôi đã thử nghiệm nó bằng cách tạo ra một chương trình segfaults:

void main() {
    int *a=0;
    *a=0;
}

Sau khi nó được phân tách, có dòng này trong /var/log/kern.log:

a.out[534]: segfault at 0 ip 08048432 sp bfaec8c0 error 6 in a.out[8048000+1000]

1

Trong Ubuntu nếu bạn đang khởi chạy ứng dụng của mình từ tệp trình khởi chạy .desktop, hãy thêm tùy chọn Terminal=truevào tệp .desktop của bạn.

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.