Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Стандартные средства |
Автор: Rickert 14.3.2007, 13:42 |
Интересуют стандартные средства для поиска утечек, чтобы указывали хоть строку, по исполнению которой была получена ошибка сегментации. Возможности установить новый софт - нет, аксиома. |
Автор: MAKCim 14.3.2007, 22:03 |
1. <mcheck.h> mtrace() muntrace() 2. библиотека http://www.inf.ethz.ch/personal/biere/projects/ccmalloc 3. библиотека http://www.perens.com/FreeSoftware |
Автор: Rickert 15.3.2007, 08:53 | ||
У меня man на них ничего не выдаёт. Не объяснишь вкратце, как их юзать? |
Автор: MAKCim 15.3.2007, 09:56 |
mtrace() ставит хуки на вызовы malloc(), realloc(), free() muntrace() отключает хуки переменная среды MALLOC_TRACE должна содержать путь к доступному для записи файлу, куда mtrace() будет сливать всю статистику по вызовам кроме того, как GNU extensions доступны в libc (<malloc.h>) __malloc_hook(), __realloc_hook(), __memalign_hook(), __free_hook(), __malloc_initialize_hook(), __after_morecore_hook() да, еще <mcheck.h> тоже GNU extension |
Автор: Rickert 15.3.2007, 12:43 |
Всё что ты перечислил работает только с malloc / free ? Я на new / delete ориентировался. |
Автор: MAKCim 15.3.2007, 12:49 |
new/delete реализованы через malloc()/free() в конце концов можно попробовать |
Автор: Rickert 16.3.2007, 12:36 |
Спасибо! |
Автор: proc_maker 22.3.2007, 15:36 | ||||
Скажите пожалуйста, а какими средствами можно сделать то же самое что делает mtrace но только для одного конкретного потока программы, чтобы не получать данные по другим потокам т.к. получаются ОГРОМНЕЙШИЕ логи. И еще попутный вопрос. Как в gdb я могу посмотреть в каком месте программы была выделена эта память (в случае утечки) если стека уже нет, а только остался адрес переменной чтобы найти причину утечки. Т.е. другими словами, я вижу что моя программа занимает пол-гига виртуальной памяти, как узнать какой из потоков занимает ее большую часть чтобы найти где утечка? Спасибо огромное! |
Автор: proc_maker 23.3.2007, 08:58 |
Спасибо за совет! |