2011-09-14 24 views
17

Tôi có một ứng dụng linux x86 sử dụng các thư viện đối tượng được chia sẻ của bên thứ ba khác nhau. Tôi nghi ngờ các thư viện này đang bị rò rỉ bộ nhớ (vì nó không thể nào được đang tôi ;-)Thay thế cho valgrind (memcheck) để tìm rò rỉ trên linux?

Tôi đã thử các valgrind đáng tin cậy, nhưng nó chết một cái chết khủng khiếp vì one of the third-party libraries is using an obscure x86 instruction rằng valgrind doesn't implement.

Tôi đã tìm thấy a recommendation for DUMA và đã thử (sử dụng kỹ thuật LD_PRELOAD để mang DUMA vào lúc chạy), nhưng nó bị hủy bỏ phàn nàn về một hoạt động miễn phí trên bộ nhớ không được cấp phát qua DUMA (gần như chắc chắn bởi một số nhà xây dựng) của một đối tượng tĩnh trong một trong các thư viện của bên thứ ba được đề cập trước đó).

Có các công cụ liên kết thời gian chạy khác (hoặc không yêu cầu biên dịch lại/relink) xung quanh sẽ hoạt động trên Linux không?

Trả lời

5

TotalView debugger (hoặc chính xác hơn là Memscope) có tính năng tương tự như một trong Valgrind.

Bạn cũng có thể thử Electric Fence (original author's link) (nguồn gốc của Duma) cho tràn bộ đệm hoặc các trường hợp cảm ứng sau miễn phí (nhưng không phải cho memleaks, mặc dù).

5

Tặng thử Dr. Memory. Nó được dựa trên DynamoRIO và chia sẻ nhiều tính năng với Valgrind.

+3

Chỉ muốn thêm rằng đó là chỉ 32 bit. –

+0

@SantoshTiwari: Tôi không nghĩ vậy. Tôi nghĩ bạn có ý gì khi nói rằng các gói nhị phân cho nền tảng của bạn chỉ có thể có sẵn cho một nền tảng cụ thể. DynamoRIO là linh hoạt và cũng hoạt động trên (một số) nền tảng 64bit. – 0xC0000022L

+1

~~ Dr.M ~~ Bản phát hành Bộ nhớ Dr. này không hỗ trợ các ứng dụng 64 bit. –

0

Heapusage là công cụ chạy đơn giản để tìm rò rỉ bộ nhớ trên Linux và macOS. Định dạng ghi nhật ký đầu ra cho rò rỉ khá giống với Valgrind, nhưng nó chỉ ghi nhật ký rò rỉ xác định (tức là phân bổ không miễn phí khi chấm dứt).

Tiết lộ đầy đủ: Tôi đã viết Heapusage để sử dụng trong các trường hợp khi Valgrind không đủ (các ứng dụng hiệu suất cao và cũng cho kiến ​​trúc CPU không được Valgrind hỗ trợ).

Các vấn đề liên quan