Профилирует ли Valgrind Massif себя с 7 КБ стека?

Мне нужно профилировать и отслеживать использование стека некоторой программы для моего исследования, но я обнаружил, что Valgrind Massif, кажется, профилирует себя с использованием стека 7 КБ, как я могу игнорировать это или есть ли какой-либо другой подходящий для меня профилировщик?

он показывает 7 КБ использования стека, даже ничего не выполняя...

int main()
{
    return 0;
}

и результат массива:

--------------------------------------------------------------------------------
Command:            ./a.out
Massif arguments:   --stacks=yes --heap=yes
ms_print arguments: massif.out.29255
--------------------------------------------------------------------------------


    KB
7.008^                 #                                                      
     |                 #:                                                     
     |                 #:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:                                                     
     |                :#:  :                                                  
     |                :#:::::                                                 
     |                :#::@::                                                 
     |                :#::@::                                                 
     |                :#::@::                                                 
     |                :#::@::            ::  :::@:: : :::::  ::  :   ::::@  : 
     |                :#::@:::::::::::::::::::::@::@::::::::@:::@:::@::::@: : 
     |              :::#::@::::       ::::::::::@::@::::::::@:::@:::@::::@: : 
     |::::::::::::::@::#::@::::       ::::::::::@::@::::::::@:::@:::@::::@: :@
   0 +----------------------------------------------------------------------->ki
     0                                                                   135.7

Number of snapshots: 96
 Detailed snapshots: [2, 6 (peak), 11, 33, 38, 53, 63, 73, 83, 93]



person Lim Wen Sheng    schedule 27.05.2019    source источник


Ответы (1)


Valgrind сам по себе не изменит (по крайней мере, значительно) размер стека, используемый гостевой программой.

То, что вы видите, скорее всего, просто размер стека, используемый кодом запуска: до того, как main запустится, может произойти множество других вещей.

person phd    schedule 30.05.2019
comment
Спасибо! Есть ли способ отследить использование стека после запуска main? - person Lim Wen Sheng; 28.06.2019
comment
Вы можете добавить в качестве первой инструкции в main вызов VALGRIND_MONITOR_COMMAND(detailed_snapshot main_begin); Это зафиксирует состояние памяти в самом начале, но я не уверен, что очень полезно различать первые несколько КБ стека и то, что следует за ним. - person phd; 01.07.2019