Nơi để tìm kiếm tập tin cốt lõi được tạo ra bởi sự cố của ứng dụng linux?


18

Tôi đang cố gắng tìm ra lý do sự cố cho một trong những ứng dụng Linux của tôi. Nhưng tôi không biết cốt lõi sẽ đi đâu.

cat /proc/sys/kernel/core_pattern
core.%e.%p

Bất kỳ ý tưởng?

Câu trả lời:


22

Kết xuất lõi được ghi trong thư mục hiện tại của quá trình tại thời điểm xảy ra sự cố.

Tất nhiên các bãi chứa cốt lõi cần phải được kích hoạt, theo mặc định những cái đó thường bị vô hiệu hóa. Kiểm tra đầu ra củaulimit -c , nếu đó là 0 thì sẽ không có tệp lõi nào được ghi. Chạy ulimit -c unlimitedđể kích hoạt các bãi lõi; đây là cài đặt theo quy trình được kế thừa bởi các quy trình được bắt đầu bởi quy trình đó.

Nếu một bãi chứa lõi nên đã được tạo ra nhưng bạn không biết ở đâu, sau đó bạn có thể bắt đầu quá trình này một lần nữa (nếu nó sẽ mà không bị rơi ngay lập tức), sau đó kiểm tra thư mục làm việc của mình bằng cách làm ls -l /proc/$pid/cwdnơi $pidlà quá trình ID của quá trình. Liên kết đó sẽ trỏ đến thư mục làm việc hiện tại của quá trình đó. Cơ hội là bãi rác cốt lõi sẽ ở đó. Nếu không, bạn cần phải chạy findtrên toàn bộ hệ thống ...


3
Tôi đã kiểm tra ulimit -c không giới hạn, nhưng vẫn không có gì trong thư mục quy trình hiện tại.
dcds

1
Có thể ứng dụng đã tự phát hiện ra một lỗi nghiêm trọng và bị hủy bỏ, nghĩa là đó không phải là sự cố "thực sự" như vi phạm phân khúc hoặc tương tự, sẽ tạo ra kết xuất lõi. Vì bạn không cung cấp thông tin về ứng dụng nên không thể biết được.
wurtel

1
Nó chắc chắn là một sự cố vì tôi cố tình làm một con trỏ null.
dcds

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.