Tôi có một chương trình mà tôi dự định phân phối cho người dùng cuối và muốn nhận được báo cáo sự cố từ họ. Nếu tôi đang sử dụng MSVC, tôi sẽ tạo ra minidumps và có những người gửi đến cho tôi, và sau đó kiểm tra chúng với PDB tương ứng để có được một dấu vết stack hữu ích, ít nhất là.GCC tương đương với PDBs
Tương đương với việc này với GCC là gì? Tôi có thể tạo ra một dấu vết ngăn xếp, nhưng nếu tôi muốn điều này là hữu ích, nó đòi hỏi phải có các biểu tượng gỡ lỗi được biên dịch thành tệp thực thi (với -g). Rõ ràng điều này là không thể chấp nhận đối với bản phát hành bản phát hành, vì tệp thực thi có thể có kích thước lớn hơn một chút.
Tôi googled một chút và tìm thấy tham chiếu đến objcopy có thể tách riêng các biểu tượng gỡ lỗi thành một tệp riêng biệt, nhưng trang đó ngụ ý tôi vẫn cần phải có các biểu tượng gỡ lỗi cùng với bản phát hành có thể phát hành.
Điều đó tốt và tốt đẹp, nhưng làm cách nào để điều chỉnh theo dõi ngăn xếp được tạo mà không có biểu tượng gỡ lỗi (và do đó chỉ chứa địa chỉ) với các biểu tượng gỡ lỗi được tách riêng sau đó. – pjohansson
gdb có thể đặt để sử dụng các biểu tượng gỡ lỗi riêng biệt, đây là cách các bản phân phối Linux cho phép gỡ lỗi, xem http://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html – ismail
Trang này dường như cũng giả định rằng thông tin gỡ lỗi có mặt trên máy tính có lỗi xảy ra. Tôi sẽ làm rõ: chúng tôi không thể gửi thông tin gỡ lỗi cho khách hàng của mình. Nó phải có khả năng cho phần mềm tạo ra một dấu vết ngăn xếp (không có các biểu tượng gỡ lỗi) và theo dõi ngăn xếp này được đối chiếu với các biểu tượng gỡ lỗi riêng biệt trên một trong các máy tính phát triển của chúng tôi ở giai đoạn sau, mà không cần sự tham gia của khách hàng. Tôi có lẽ cũng nên làm rõ rằng đây là một môi trường Windows, không phải là một * nix một. – pjohansson