2013-04-16 45 views
27

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

+0

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? –

Trả lời

44

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]

+12

+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

+0

Điều này không hoạt động trên CentOS 7. – Ali

+1

@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

23

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:

  1. đặt các tập tin cốt lõi ở đây: /var/spool/abrt/
  2. có gui được bắt đầu với lệnh abrt-gui
  3. augments các corefile với thêm thông tin về quá trình thất bại.
  4. đượ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:

Redhat Book

CentOS Forum

+0

cảm ơn thông tin này. Tôi đã nhận được tập tin coredump, nhưng làm thế nào để mở nó với abrt? – Devos

+0

nếu bạn không chắc chắn về cách tệp lõi được tạo ra, chỉ cần #file core.XYZ - điều này sẽ hiển thị lệnh được thực thi để tạo tệp lõi. – kumar

Các vấn đề liên quan