Правильно ли работает инструмент массива с многопоточными приложениями?
Я разрабатываю многопоточное приложение, которое, кажется, выделяет огромные объемы памяти во время работы. Вся память освобождается в конце выполнения, поэтому valgrind не обнаруживает утечек памяти. Я пытался использовать инструмент массива, чтобы выяснить, что происходит, но ms_print, похоже, показывает информацию только о главном потоке. Однако я считаю, что подавляющее большинство памяти выделяется в дочерних потоках. Можно ли заставить массив показывать информацию о них?
2 ответа
Для меня (Ubuntu 12.04) это работает по умолчанию. Как и в вашем приложении, мой основной поток ничего не делает (кроме обработки моего пользовательского интерфейса на основе gtk), и все (de) распределение выполняется в подпотоках.
У меня действительно были некоторые начальные трудности, потому что я анализировал проект на основе autotools, и в своих первых попытках я анализировал сценарий оболочки, сгенерированный libtool, а не моим приложением.
Вы можете установить --trace-children=yes [default:no]
Когда включено, Valgrind будет прослеживать подпроцессы, инициированные через системный вызов exec. Это необходимо для многопроцессорных программ.