Saya ingin mengiklankan utilitas heaptrack saya yang baru saja diumumkan, yang seharusnya sesuai dengan yang Anda cari saat itu. Anda dapat menemukan informasi lebih lanjut di sini:http://milianw.de/blog/heaptrack-a-heap-memory-profiler-for-linux
Dibandingkan dengan alat jam tangan heap Anda, kinerjanya seharusnya jauh lebih baik, karena saya menggunakan libunwind dan libbacktrace yang lebih baru untuk menunda anotasi lacak balik dengan informasi debug DWARF.
Saya ingin mendapatkan lebih banyak masukan tentangnya, jadi cobalah!
memleax seharusnya bekerja untuk Anda.
Ini men-debug kebocoran memori dari proses yang berjalan dengan melampirkannya, tanpa mengkompilasi ulang program atau memulai kembali proses target. Sangat nyaman dan cocok untuk lingkungan produksi.
Itu TRAPs hanya untuk panggilan malloc/free(), jadi itu akan membawa dampak kinerja yang lebih sedikit daripada Vagrild.
Ini berfungsi di GNU/Linux-x86_64 dan FreeBSD-amd64.
CATATAN:Saya penulisnya, saran apa pun diterima
GNU libc memiliki debugging malloc bawaan:
http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html
Gunakan LD_PRELOAD untuk memanggil mtrace()
dari .so Anda sendiri:
#include <mcheck.h>
static void prepare(void) __attribute__((constructor));
static void prepare(void)
{
mtrace();
}
Kompilasi dengan:
gcc -shared -fPIC dbg.c -o dbg.so
Jalankan dengan:
export MALLOC_TRACE=out.txt
LD_PRELOAD=./dbg.so ./my-leaky-program
Kemudian periksa file keluaran:
mtrace ./my-leaky-program out.txt
Dan Anda akan mendapatkan sesuatu seperti:
Memory not freed:
-----------------
Address Size Caller
0x0000000001bda460 0x96 at /tmp/test/src/test.c:7
Tentu saja, jangan ragu untuk menulis kait malloc Anda sendiri yang membuang seluruh tumpukan (memanggil backtrace() jika menurut Anda itu akan membantu).
Nomor baris dan/atau nama fungsi akan dapat diperoleh jika Anda menyimpan info debug untuk biner di suatu tempat (mis. biner memiliki beberapa info debug bawaan, atau Anda melakukan objcopy --only-keep-debug my-leaky-program my-leaky-program.debug
).
Selain itu, Anda dapat mencoba GC Boehm, ini berfungsi sebagai pendeteksi kebocoran juga:
http://www.hpl.hp.com/personal/Hans_Boehm/gc/leak.html