Как посмотреть вывод массива Valgrind (или другого профилировщика кучи) при выполнении программы?

Когда я использовал Valgrind Massif в LINUX, я пытался увидеть файл massif.out.pid в реальном времени, но он создает этот файл после завершения работы Massif. Я хочу разместить в коде точки останова, чтобы посмотреть, как определенные инструкции оказывают влияние на кучу, так как есть только несколько точек интереса. Я знаю, что мог бы переписать часть кода, чтобы справиться с этим, но это означает, что нужно воздействовать на исходный код так, чтобы он не был конечным результатом, а также потому, что это многочисленные программы, на которых я хочу сделать это. Есть ли способ наблюдать за точками в коде, одновременно просматривая профиль в профиле кучи, чтобы я мог различать точки выполнения?

3 ответа

Очевидно, в Linux есть инструмент, который может предоставлять данные в реальном времени, я не пробовал его, но нашел после дополнительного поиска в Google. Он называется heaptrack, и, очевидно, он может отслеживать кучу во время работы программы:

http://milianw.de/blog/heaptrack-a-heap-memory-profiler-for-linux

Может быть, это немного поздно, но массив-визуализатор — это инструмент, который вы ищете:массив-визуализатор

Напишите sleep(0.5) в код, где вы хотите увидеть использование кучи памяти. затем запустите приложение с помощью heaptrack ./app, а затем откройте файл результатов с помощью heaptrack_gui app.heaptrack.gz

перейдите к потребляемому крану и проверьте использование памяти по шкале времени.

Другие вопросы по тегам