2010-10-16 27 views
17

Tôi đang cố gắng gỡ lỗi lỗi phân đoạn do chương trình C của tôi gây ra bằng cách sử dụng gdb. Tệp kết xuất lõi không được tạo tự động khi tôi chạy chương trình của mình và tôi phải chạy lệnhTệp kết xuất lõi không được tạo trên lỗi phân đoạn

ulimit -c unlimited 

để tạo tệp lõi trong lần chạy tiếp theo.

Tại sao tệp kết xuất lõi không được tạo tự động và tại sao tôi phải chạy lệnh ulimit mỗi lần để tạo tệp lõi trong lần chạy tiếp theo của chương trình?

Hệ điều hành tôi sử dụng là Ubuntu 10.10.

Trả lời

18

Bạn cần phải đặt lệnh

ulimit -c unlimited 

trong cài đặt môi trường của bạn.

Nếu bạn đang sử dụng bash như shell của bạn, bạn cần phải đặt lệnh trên trong ~/.bashrc

9

Đó là do theo mặc định, phân phối của bạn giới hạn kích thước tệp lõi là 0 khối. Lệnh ulimit mà bạn đã đề cập tăng sẽ giới hạn đến vô cùng.

Tôi không biết về Ubuntu, nhưng hầu hết các bản phân phối đều có tệp/etc/giới hạn với mặc định hệ thống cho giới hạn tài nguyên.

15

Bạn cũng có thể muốn cố gắng sửa /etc/security/limits.conf tập tin thay vì thêm ulimit -c unlimited để ~/.bashrc.

limits.conf là địa điểm "chính xác" để chỉ định chi tiết kết xuất lõi trong hầu hết các bản phân phối Linux.

1

Lỗi phân đoạn là do các giá trị không liên quan cho các biến đường dẫn. Trên hệ thống của tôi, người dùng là [email protected] và nội dung được thêm vào như sau.

PATH=$PATH:/home/sidd/ns-allinone-2.35/bin:/home/sidd/ns-allinone-2.35/tcl8.5.10/unix:/home/sidd/ns-allinone-2.35/tk8.5.10/unix 

LD_LIBRARY_PATH=/home/sidd/ns-allinone-2.35/otcl-1.14:/home/sidd/ns-allinone-2.35/lib 

TCL_LIBRARY=/home/sidd/ns-allinone-2.35/tcl8.5.10/library 

Vui lòng tham khảo this blog post (RẤT QUAN TRỌNG).

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