【问题标题】:Is Valgrind Massif profiling itself with 7 KB of stack?Valgrind Massif 是否使用 7 KB 的堆栈来分析自己?
【发布时间】:2019-05-31 02:14:05
【问题描述】:

我需要为我的学习分析和跟踪某些程序的堆栈使用情况,但我发现 Valgrind Massif 似乎使用 7 KB 的堆栈使用情况来分析自己,我该如何忽略它或者是否有任何其他适合我的分析器?

它显示了 7 KB 的堆栈使用量,甚至什么都不执行...

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]


【问题讨论】:

    标签: valgrind massif


    【解决方案1】:

    Valgrind 本身不会改变(至少很大程度上)guest 程序使用的堆栈大小。

    您看到的很可能只是启动代码使用的堆栈大小:在 main 开始运行之前,可能会发生很多其他事情。

    【讨论】:

    • 谢谢!有什么方法可以在 main 启动后跟踪堆栈使用情况吗?
    • 您可以在 main 中添加对 VALGRIND_MONITOR_COMMAND("detailed_snapshot main_begin") 的调用作为第一条指令;这将在开始时捕获内存的状态,但我不确定区分堆栈的前几 KB 和后面的内容是否很有帮助。
    猜你喜欢
    • 2020-05-27
    • 1970-01-01
    • 2014-08-27
    • 2011-02-10
    • 1970-01-01
    • 2020-01-20
    • 2017-02-21
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多