Debug khi chương trình bị crash trên linux

Một trong các các vấn đề làm cho đau đầu những developer lúc thiết kế trên Linux là điều tra các lỗi chết lịch trình bất thình lình – crash. Rất các anh em dev trầm trồ hơi hoảng sợ cùng lo ngại lúc tự dưng công tác lăn ra bị tiêu diệt cùng với thông tin dạng hình như thế này.

You watching: Debug khi chương trình bị crash trên linux

Segmentation faulthoặcAborted (core dumped)

Trong bài xích này bạn muốn chia sẻ với bạn bè một số trong những kỹ năng debug để đối mặt với các lỗi bị tiêu diệt chương trình như thế này. Bình tĩnh, sáng sủa với “giết mổ bug”.

 “Segmentation fault” là gì ?

Lúc chương trình của họ chạy, nó truy vấn mang đến những phần khác nhau của bộ lưu trữ. Trước hết, họ có những trở nên local bên trong “stack”. Thứ nhị, bọn họ cũng rất có thể gồm những vùng nhớ được cấp phát trong quy trình chạy (runtime) sử dụng malloc/calloc/realloc (vào C), new (trong C++) cùng bên trong “heap”. Cmùi hương trình chỉ được phép truy cập mang lại vùng nhớ nằm trong quyền làm chủ của chính nó mà thôi. Bất cđọng truy cập vào vùng lưu giữ nào nằm phạm vi có thể chấp nhận được của công tác sẽ dẫn đến lỗi “Segmentation fault”.

See more: Chuyển Đổi 1 Feet Bằng Bao Nhiêu Cm, Inch, Cã¡Ch ChuyểN đÁ»•I Nhæ° Thế Nã O

Có 5 lỗi phổ cập dẫn mang lại lỗi “segmentation fault” kia là

Dereferencing bé trỏ NULL Dereferencing con trỏ chưa được khởi chế tạo Dereferencing nhỏ trỏ đã biết thành không lấy phí hoặc delete Ghi quý giá thừa quá giới hạn của mảng Hàm đệ quy sử dụng hết vùng cỗ dành riêng cho stack – nói một cách khác là “staông chồng overflow”

“Chip Core dump” là gì ?

Bất cứ đọng lúc nào một áp dụng gặp mặt sự vắt gây nên crash (Gọi nôm nà là bị tiêu diệt chương trình), hệ điều hành đang tàng trữ (hoặc gửi) báo cáo về lỗi kia. Trên Windows, chúng ta đã nhận ra một hộp thoại thông báo lỗi với bạn có thể click vào button nhằm debug lỗi (với ĐK có source code với ứng dụng được biên dịch ở chế độ debug).

See more: Tự Điền Số Thứ Tự Trong Excel, 2 Cách Đánh Số Thứ Tự Trong Excel Cực Dễ

*

Trên Linux, bất kể lúc nào một vận dụng bị crash (thông thường độc nhất là gây nên bởi “Segmentation fault”), nó tất cả tùy chọn tạo thành một tệp tin lưu vết lỗi điện thoại tư vấn là “core dump” (trong hầu hết những ngôi trường đúng theo, cài đặt mang định của Linux đã tắt tuấn kiệt này). Vi xử lý Core dump là 1 tệp tin cất giữ trạng thái của lịch trình trên thời gian nhưng nó bị tiêu diệt. Nó cũng là bạn dạng sao giữ lại tất cả các vùng bộ nhớ ảo đã có truy cập vì lịch trình.

Làm cầm như thế nào nhảy thiên tài tạo thành tệp tin “core dump” lúc app crash, cùng tệp tin này ở ở chỗ nào ?

Việc này phụ thuộc vào phiên bản phân pân hận với cấu hình nhỏ Linux của doanh nghiệp. Để cho đơn giản thì tại chỗ này bản thân lấy ví dụ trên Ubuntu desktop. Các phiên phiên bản khác của Linux cũng tương tự thôi, bằng hữu rất có thể search thêm trên top google. Để nhảy chức năng tự động chế tác file core dump, họ rất cần phải cho Linux biết kích thước cho phép của file core dump là bao nhiêu. Sử dụng lệnh ulimit nhằm thiết lập: