Я ищу инструмент, который поможет визуализировать использование памяти в приложении и показать, что использует большую часть памяти - то есть какие классы, сколько объектов и т. Д. Есть аналогичный thread, который обсуждает ту же проблему для Windows, но мне нужно сделать это на linux.Визуализация памяти для приложения C++ linux
ответ
Valgrind было бы нормально для Linux.
Может ли это дать такую информацию? Я просмотрел http://valgrind.org/docs/manual/ms-manual.html и видел только стек и кучу информации, а не многое другое ... – naumcho
Valgrind - это основа для двоичной аппаратуры. Существует множество инструментов, сделанных с Valgrind, и вы всегда можете создавать свои собственные. Большинство людей распознают инструменты, распространяемые с Valgrind по умолчанию, в то время как это всего лишь несколько примеров из множества вариантов. :) –
Вы захотите использовать массив инструментов Valgrind (который документирован, с которым вы связались). Он периодически принимает моментальные снимки вашей кучи и создает полную трассировку стека, из которых строки кода отвечают за какой процент распределений кучи.
example.cpp:
struct Int_1 { int a; };
struct Int_2 { int a,b; };
struct Int_3 { int a,b,c; };
struct Int_4 { int a,b,c,d; };
int main(void)
{
for(int i = 0; i < 1000; ++i)
{
new Int_1(); // Line 10
new Int_2(); // Line 11
new Int_3(); // Line 12
new Int_4(); // Line 13
}
return 0;
}
Вы хотите скомпилировать его с отладочной, так что массив может дать вам точные цифры строки:
g++ -g example.cpp
Теперь запустить его под Valgrind-массива:
valgrind --tool=massif ./a.out
Это создаст файл massif.out.PID с периодическими снимками, которые выглядят следующим образом:
#-----------
snapshot=59
#-----------
time=1487054
mem_heap_B=38384
mem_heap_extra_B=53752
mem_stacks_B=0
heap_tree=detailed
n4: 38384 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n0: 15344 0x4005C3: main (MemExample.cpp:13)
n0: 11520 0x4005B1: main (MemExample.cpp:12)
n0: 7680 0x40059F: main (MemExample.cpp:11)
n0: 3840 0x40058D: main (MemExample.cpp:10)
Выходной сигнал интерпретируется как «В произвольной единицы времени 1487054, были 38384 байтов, выделенных в куче». Отступ представляет собой иерархическое разбиение тех 38348 байт, которые вы можете наблюдать пропорции, соответствующие их размерам. С более сложным кодом вы увидите целые цепочки вызовов, которые содержат больше методов и конструкторов.
Идея состоит в том, что количество байтов рядом с конструктором на этом выходе показывает, сколько экземпляров этого класса было выделено через эту конкретную трассировку стека, например: в строке 10 выделено 3840 байт, что является конструкцией объектов Int_1 поэтому на данный момент было 960 экземпляров.
Раздел, который вы хотите внимательно прочитать в руководстве: http://valgrind.org/docs/manual/ms-manual.html#ms-manual.thesnapshotdetails – lnqhien
- 1. C++ визуализация памяти переменной
- 2. Визуализация макета памяти C-структур
- 3. Простая визуализация графа для приложения терминала C
- 4. Визуализация алгоритмов для C#
- 5. Необходимость использования памяти в C++ для Linux
- 6. Освобождение памяти в linux C++?
- 7. Использование памяти приложения c c использованием
- 8. Как узнать размер памяти моего приложения linux?
- 9. авария приложения Linux из-за нехватки памяти
- 10. Отключение перегрузки Linux-памяти внутри приложения
- 11. Отладка приложения для захвата памяти во встроенной среде Linux
- 12. Разработка приложения для Linux в C#
- 13. Выделение памяти заранее для приложения C++
- 14. Профилирование производительности/памяти для приложения C#/XAML
- 15. У Linux C приложения хватает на память
- 16. запрашивающая памяти для приложения
- 17. Использование памяти приложения C++/Qt
- 18. Визуализация дерева в C#
- 19. Уменьшение объема памяти приложения C#
- 20. Визуализация многомерных данных C++
- 21. Интерактивный график и визуализация дерева для настольного приложения в Haskell
- 22. Отладчик памяти для ядра linux
- 23. Профилировщик памяти для C
- 24. Приложение для отладки визуальной памяти под Linux?
- 25. Визуализация кода на C++
- 26. процесс общей памяти не используется (c, linux)
- 27. Визуализация потребления памяти Memcached с течением времени
- 28. Приложения для обнаружения утечек памяти
- 29. Запрос памяти в Linux
- 30. Создание приложения для потребления памяти
В теме, которую вы упомянули, обсуждается Valgrind, которая решает проблему –