Chúng tôi có phiên bản nhúng của nhân Linux chạy trên lõi MIP. Chương trình chúng tôi đã viết chạy một bộ thử nghiệm cụ thể. Trong một trong các bài kiểm tra căng thẳng (chạy trong khoảng 12 giờ), chúng tôi nhận được một lỗi seg. Điều này lần lượt tạo ra một bãi chứa lõi.Bắt gỡ lỗi tốt hơn khi Linux gặp sự cố trong một chương trình C
Rất tiếc, kết xuất lõi không phải là rất hữu ích. Sự cố là trong một số thư viện hệ thống được liên kết động (có thể là pthread hoặc glibc). Các vết lùi trong các bãi chứa lõi là không hữu ích vì nó chỉ cho thấy điểm vụ tai nạn và không có người gọi khác (ứng dụng không gian sử dụng của chúng tôi được xây dựng với -O0 -g, nhưng vẫn không có lại thông tin dấu vết):
Cannot access memory at address 0x2aab1004
(gdb) bt
#0 0x2ab05d18 in ??()
warning: GDB can't find the start of the function at 0x2ab05d18.
GDB is unable to find the start of the function at 0x2ab05d18
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
This problem is most likely caused by an invalid program counter or
stack pointer.
However, if you think GDB should simply search farther back
from 0x2ab05d18 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
bất hạnh khác -ness là chúng ta không thể chạy gdb/gdbserver. gdb/gdbserver tiếp tục vi phạm trên __nptl_create_event. Thấy rằng các thử nghiệm tạo ra các chủ đề, giờ và phá hủy sau đó mỗi 5s nó gần như không thể ngồi trong một thời gian dài đánh tiếp tục trên chúng.
EDIT: Một lưu ý khác, backtrace và backtrace_symbols không được hỗ trợ trên chuỗi công cụ của chúng tôi.
Do đó:
Có một cách để bẫy lỗi seg và tạo dữ liệu vết lùi hơn, chồng con trỏ, gọi chồng, vv?
Có cách nào để nhận thêm dữ liệu từ một phân đoạn lõi bị lỗi trong tệp .so không?
Cảm ơn.
Bạn có thể thử xử lý 'SIGSEGV' nếu có thể? Nó không bao giờ được đề nghị, nhưng tôi cảm thấy rằng có thể giúp bạn trong tình huống này. – Stark07