Как посмотреть вывод массива 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
перейдите к потребляемому крану и проверьте использование памяти по шкале времени.