Команда для отслеживания дочернего процесса в инструменте массива

Я использую инструмент массива в Valgrind. Мне нужно отслеживать кучу памяти дочернего процесса. Я не смог найти команду для получения кучи памяти дочернего процесса. Мое приложение является сервером демонов.

В инструменте memcheck я могу получить информацию о дочернем процессе, используя

--track-children=yes

Есть ли способ отслеживать память кучи дочернего процесса с помощью массива??

Инструмент создает файл журнала для всех дочерних процессов, но создает файл массива только для основного процесса.

valgrind \
--tool=massif \
--heap=yes \
--time-stamp=yes \
--time-unit=ms \
--max-snapshots=1000 \
--detailed-freq=5 \
--log-file=../Valgrind_%p_massif.log \
--massif-out-file=../masssif_%p_output \
--xtree-memory=full \
<binary_name>

Я ожидаю, что файл массива будет создан для всех дочерних процессов. но он создает только один файл для основного процесса.

Я проверил время последнего доступа к файлу. Это время выполнения основного процесса до ожидания запроса.


person Bensh P    schedule 09.08.2019    source источник


Ответы (1)


Вам не хватает опции --trace-children=yes

--trace-children не является специфичной для memcheck опцией, это общая опция valgrind, которую необходимо использовать с любым инструментом valgrind, если вы хотите, чтобы дочерние процессы также запускались под valgrind после exec.

person phd    schedule 09.08.2019
comment
Спасибо доктор философии. Я добавил команду. Это работает. Файлы, созданные для дочернего процесса. Но массив фиксирует использование памяти до тех пор, пока сервер демона не включится и не будет слушать порт. После этого ни одна из деталей использования памяти не была захвачена. - person Bensh P; 12.08.2019
comment
Демон-сервер нормально завершает работу? Кроме того, я полагаю, что этот демон-сервер работает как обычный пользователь (не как root и / не с setuid)? - person phd; 12.08.2019
comment
Демон-сервер не будет остановлен. Он работает как обычный пользователь. - person Bensh P; 13.08.2019
comment
Если демон-сервер не завершает работу, то у вас нет гарантии, когда массив сделает какие-либо дампы памяти. Вы можете запускать выходные файлы массива, например. используя снапшот vgdb из оболочки. Сделайте vgdb help для списка разрешенных действий. - person phd; 14.08.2019
comment
спасибо доктор философии. попробую с vgdb. Это также сработало, когда я убил процесс с помощью pkill. но он не работает все время. - person Bensh P; 15.08.2019