Tôi đang sử dụng backtrace() và backtrace_symbols() để lùi đầu ra trên SIGSEGV và các tín hiệu khác ở định dạng như thế này:Làm thế nào để giải thích địa chỉ backtrace để gỡ lỗi với GDB
0: [0xb750818]
1: /opt/server/libQtScript.so.4(+0x6f42a) [0xb782c42a]
2: /opt/server/libQtScript.so.4(+0x7bffc) [0xb7838ffc]
3: /opt/server/libQtScript.so.4(+0x86946) [0xb7843946]
4: /opt/server/libQtScript.so.4(+0x7c4bc) [0xb78394bc]
5: /opt/server/libQtScript.so.4(+0x86946) [0xb7843946]
6: /opt/server/libQtScript.so.4(+0x9603e) [0xb785303e]
7: /opt/server/libQtScript.so.4(_ZN12QScriptValue4callERKS_RK5QListIS_E+0x2e7) [0xb7891647]
Trong trường hợp đặc biệt này, khung # 7 là tốt cho tôi, mặc dù khung 1-6 mang lại cho tôi một số loại "+ x" địa chỉ.
Cách lấy đường chính xác để tháo rời cho "+ 0x6f42a" và các địa chỉ khác trong GDB? Và khung # 0, không có mô-đun được mô tả, có nghĩa là gì?
thư mục gỡ lỗi-tệp là dành cho GDB, nhưng tôi nhận được backtrace với các biểu tượng mà không cần đính kèm GDB. Làm thế nào để đảm bảo backtrace_symbols() nhận được tất cả dữ liệu ký hiệu? Việc đặt tệp .debug có đủ không? Những tai nạn này rất hiếm, vì vậy tôi không thể tái tạo chúng trong môi trường phát triển mỏ. –