如何在 Valgrind 上设置分析的开始和结束

Posted

技术标签:

【中文标题】如何在 Valgrind 上设置分析的开始和结束【英文标题】:How to set start and end of profiling on Valgrind 【发布时间】:2015-03-20 04:32:30 【问题描述】:

要在 valgrind 上创建配置文件转储,可以:

valgrind --tool=callgrind 程序 [program_options]

[来自http://valgrind.org/docs/manual/cl-manual.html]

我想在一些源文件中设置分析的开始和结束。例如

启动 main.cpp:30 停止 main.cpp:44

我认为这是在 android 上使用这种技术进行分析的。这在 Valgrind 上可行吗?

【问题讨论】:

那是一个容器吗? 【参考方案1】:

根据参考手册http://valgrind.org/docs/manual/cl-manual.html#cl-manual.basics,您至少可以根据自己的客户端请求启动和停止分析:

如果您要分析的程序部分位于运行中间的某个位置,则最好在不进行任何分析的情况下快进到该部分,然后启用分析。这是通过使用命令行选项 --instr-atstart=no 并在 shell 中运行来实现的:callgrind_control -i on 就在有趣的代码部分执行之前。要准确指定分析应该开始的代码位置,请使用客户端请求 CALLGRIND_START_INSTRUMENTATION。

http://valgrind.org/docs/manual/cl-manual.html#cr.start-instr

CALLGRIND_START_INSTRUMENTATION 如果尚未启用,则启动完整的 Callgrind 检测。缓存模拟完成后,这将刷新模拟缓存并导致之后的人工缓存预热阶段,其中缓存未命中,这在现实中不会发生。另请参阅选项 --instr-atstart。

CALLGRIND_STOP_INSTRUMENTATION 如果尚未禁用,则停止完整的 Callgrind 检测。这会刷新 Valgrind 的翻译缓存,之后不会进行额外的检测:它实际上将以与 Nulgrind 相同的速度运行,即以最小的速度运行。使用它来加速 Callgrind 运行无趣的代码部分。使用 CALLGRIND_START_INSTRUMENTATION 再次启用检测。另请参阅选项 --instr-atstart。

【讨论】:

以上是关于如何在 Valgrind 上设置分析的开始和结束的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AMP 上分享具有特定开始和结束时间的 YouTube 视频?

valgrind / callgrind:什么是`_dl_runtime_resolve_xsave`

使用 valgrind 进行平铺矩阵乘法的 C++ 性能分析

死锁问题分析的利器——valgrind的DRD和Helgrind

如何快速设置数组开始和结束索引?

守护进程的内存分析