Tôi cần biết các cách để tìm ra các rò rỉ bộ nhớ trong một thư viện được chia sẻ sẽ được tải xuống một bản nhị phân phát hành. Tôi có nghĩa là thư viện được chia sẻ tôi xây dựng với tùy chọn -g nhưng nhị phân tải các thư viện được chia sẻ không được xây dựng với tùy chọn -g.valgrind - Tìm rò rỉ bộ nhớ trong một thư viện được chia sẻ
Tôi nhận được báo cáo rò rỉ như sau.
==739== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==739== by 0x84781B1: ???
==739== by 0x87507F5: ???
==739== by 0x874CF47: ???
==739== by 0x874E657: ???
==739== by 0x874F7C2: ???
==739== by 0x8779C0C: ???
Vui lòng cho tôi biết cách nhận dấu vết ngăn xếp của rò rỉ từ thư viện được chia sẻ?
Có một bản vá cung cấp tùy chọn vô hiệu hóa tải biểu tượng sau dlclose. Các miếng vá hoạt động và tôi đã sử dụng nó nhiều lần. Nhưng bản vá trên phiên bản cũ và tôi đoán nó đã bị hỏng rồi. https://bugs.kde.org/show_bug.cgi?id=79362 – k0n3ru
@TomH: Hãy để tôi chỉ ra rằng giải pháp "bỏ qua dlclose" có thể dẫn đến nhiều kết quả dương tính giả. Nếu có các đối tượng trên ngăn xếp mà phá hủy các phần tử, mà là trên đống, sau đó chúng được hiển thị trong đầu ra như rò rỉ, bởi vì dlclose đã có thể thực hiện phá hủy ngay từ đầu. – newhouse
Và thứ hai không hoạt động tốt, nếu valgrind là 64 bit, nhưng bạn gỡ lỗi 32 – newhouse