2013-02-08 3 views
2

Я пытаюсь увидеть, какой процесс вызывает утечку памяти, и выгружать кучу, которая заставляет ее видеть, в чем проблема.Включить опцию memleak в gdb для linux

Какую команду я использую в gdb для установки утечки памяти и проверки кучи?

Я пробовал:

(gdb) check -leaks 

checkpoint: can't find fork function in inferior. 

(gdb) help info heap 

Undefined info command: "heap". Try "help info". 

(gdb) help info leaks 

Undefined info command: "leaks". Try "help info". 
+2

Использовать что-то наподобие valgrind? – vonbrand

+0

поэтому у gdb нет встроенной команды? В основном в моей организации, у меня нет прав root и нет уверенности, что они установят valgrind – user862833

+0

Вы * попробуйте * valgrind? – jsj

ответ

9

Valgrind ваш ответ, как люди указали. Обычно Valgrind будет сообщать об ошибках в конце выполнения вашей программы. Вы можете связать Valgrind с GDB (vgdb), чтобы сбрасывать статистику Valgrind во время выполнения программы, пока она работает под GDB.

Обратитесь к аналогичному поставленному вопросу:

Dumping contents of lost memory reported by Valgrind

+1

+1 за сообщение, что вы можете связать 'GDB' и' Valgrind'. –

+1

Хотя я люблю valgrind, к сожалению, он недоступен на всех платформах. ОП спросил о gdb, который доступен на более платформах, чем valgrind (например, sparc solaris). –

2

info leaks и info heap являются командами, которые доступны в GDB только на HP-UX (HP-UX БГДЕ является адаптированной версией Open Source GNU отладчика GDB и вызывается на The HP Wildebeest Debugger (WDB) - http://www.hp.com/go/wdb). В Linux вам нужно использовать valgrind.