Tôi muốn thay đổi vị trí mặc định của tệp kết xuất lõi sao cho mỗi khi một vùng lõi được tạo, nó đi đến thư mục đó. Ngoài ra, có thể lưu tệp kết xuất theo tên của tệp bị lỗi ở vị trí này?Thay đổi vị trí của vùng đổ lõi
Trả lời
Vâng, đúng vậy. Bạn có thể thay đổi /proc/sys/kernel/core_pattern
để xác định tên đường dẫn được sử dụng để tạo tệp lõi. Để biết thêm, xem man core
dụ:
echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern
sẽ gây ra tất cả các lõi tương lai bãi được tạo ra trong /tmp
và được đặt tên là core_[program].[pid]
+1 cho mẹo 'tee';) Lưu ý rằng cũng có' sysctl'. Sau đó, nó là 'sysctl -w kernel.core_pattern = '/ tmp/core_% e.% P'' – hek2mgl
Điều này không hoạt động trên CentOS 7. – Ali
@Ali -" không hoạt động "không phải là mô tả sự cố hữu ích. Nó nên, nếu không kiểm tra các điểm bullet trong [manpage lõi] (http: //www.unix.com/man-page/centos/5/core /), và nếu vấn đề vẫn tồn tại, hãy hỏi một câu hỏi mới, bình luận không phải là nơi để thảo luận các vấn đề mới. – mata
Trước khi theo các hướng dẫn trong câu trả lời được chấp nhận, nó có thể là tốt ý tưởng kiểm tra nội dung của /proc/sys/kernel/core_pattern
để xem liệu hệ thống Redhat abrt có đang được sử dụng hay không.
-> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
Nếu sử dụng, bạn đã có một kế hoạch khá rộng rãi để quản lý tệp lõi mà bạn muốn hiểu trước khi ghi đè lên.
Tóm lại, abrt:
- đặt các tập tin cốt lõi ở đây:
/var/spool/abrt/
- có gui được bắt đầu với lệnh
abrt-gui
- augments các corefile với thêm thông tin về quá trình thất bại.
- được cấu hình với tập tin này:
/etc/abrt/abrt-action-save-package-data.conf
Một trở ngại chung với việc sử dụng nó là thay đổi dòng này trong tập tin cấu hình:
ProcessUnpackaged = no
Thay đổi đó để có để nắm bắt các file lõi từ của bạn các quy trình homebrew, nếu không nó sẽ chỉ chụp các tệp lõi từ các chương trình được trình quản lý gói cài đặt.
[EDIT để trả lời làm thế nào để sử dụng coredump] Để kiểm tra một bãi chứa lõi Tôi làm điều này:
cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump
Có thể có một cách tốt hơn để đến nỗi, nhưng gdb đã phục vụ tốt cho tôi vì vậy tôi có không tìm cách khác. Chỉ cần thay thế XXXXXXX bằng thư mục chứa tệp coredump của bạn. Lệnh gdb được cắt và dán sẵn sàng.
Tài liệu tham khảo:
Các "những gì đã xảy ra" phiên bản: http://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is- thư mục không tồn tại? –