2010-05-04 40 views
7

Gần đây tôi đã nhận thấy sự gia tăng kích thước của các bãi lõi do ứng dụng của tôi tạo ra. Ban đầu, chúng chỉ có kích thước khoảng 5MB và chứa khoảng 5 khung ngăn xếp, và bây giờ tôi có các khối lõi> 2GB và thông tin chứa trong chúng không khác với các bãi nhỏ hơn.Vùng lõi Linux quá lớn!

Có cách nào tôi có thể kiểm soát kích thước của các bãi lõi được tạo không? Không nên ít nhất chúng nhỏ hơn bản thân ứng dụng nhị phân?

Binaries được biên soạn theo cách này:

  • Biên soạn trong chế độ phát hành với debug ký tự (ví dụ, tùy chọn biên dịch -g trong GCC).
  • Biểu tượng gỡ lỗi được sao chép vào một tệp
    riêng biệt và bị tước khỏi số nhị phân
    .
  • Liên kết biểu tượng gỡ lỗi GNU được thêm vào nhị phân.

Khi bắt đầu ứng dụng, có một cuộc gọi tới setrlimit đặt giới hạn cốt lõi thành vô cực - Đây có phải là vấn đề không?

+1

Dừng cho ăn burritos ứng dụng của bạn. – Pierreten

Trả lời

1

Có, setrlimit là lý do bạn nhận được các tệp lõi lớn. Bạn có thể đặt giới hạn về kích thước lõi trong hầu hết các hệ vỏ, ví dụ: trong bash bạn có thể làm ulimit -c 5000000. Tuy nhiên, cuộc gọi setrlimit của bạn sẽ ghi đè lên điều đó.

/etc/security/limits.conf cũng có thể được sử dụng để đặt giới hạn trên trên kích thước lõi.

+2

Tôi nghĩ rằng câu trả lời này là gây hiểu lầm, setrlimit sẽ chỉ đảm bảo kết xuất lõi không lớn hơn được chỉ định bằng cách cắt bớt nó. Vùng kết xuất lõi là kích thước do bộ nhớ mà ứng dụng đã cấp phát hoặc ánh xạ. – Peter

11

Có - không phân bổ bộ nhớ rất nhiều :-)

Các bãi chứa lõi chứa các hình ảnh đầy đủ của không gian địa chỉ của ứng dụng của bạn, bao gồm cả mã, stack và heap (đối tượng malloc'd vv)

Nếu các vùng lõi của bạn> 2GB, điều đó ngụ ý rằng tại một thời điểm nào đó bạn đã phân bổ nhiều bộ nhớ đó.

Bạn có thể sử dụng setrlimit để đặt giới hạn thấp hơn về kích thước kết xuất lõi, có nguy cơ kết thúc với kết xuất lõi mà bạn không thể giải mã (vì nó không đầy đủ).

+2

Nếu ứng dụng gặp sự cố trong khi ứng dụng có tệp lớn được ánh xạ với 'mmap', thì bạn cũng sẽ nhận được tệp đó trong vùng chứa của mình. – caf

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