c++ - frame_dummy 在分析上下文中意味着什么?

标签 c++ g++ profiling

在使用 gprof 分析我编写的 C++ 程序的过程中,我注意到绝大多数执行时间都花在函数“frame_dummy”上。更准确地说,gprof 输出的平面配置文件中的第一个条目显示 76.38% 的样本时间花费在调用名为 frame_dummy 的函数上,调用次数为 24611191。

简而言之,我试图理解 frame_dummy 指的是什么——因为我没有任何这样命名的函数——以及这对我的优化工作意味着什么。

虽然不太可能相关,但我应该补充一点,该程序旨在使用多重网格算法求解泊松方程,并使用 MPI 来并行化任务。然而,尽管存在 MPI 函数调用,但上面提到的 gprof 输出是从仅运行一个进程派生的。我还应该注意到,我的程序除了 MPI 之外没有任何依赖项,并且是使用 g++ 4.6.1 编译的。

最佳答案

这里有一个很好的解释:http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html .但我不确定为什么您的程序会在 frame_dummy 中花费这么多时间,或者为什么它会被调用这么多次。

也许您的二进制文件中的调试信息以某种方式损坏,或者被 gprof 误读?或者 gprof 可能会被 MPI 混淆?这里有一些尝试:在 gdb 中运行您的程序,并在 frame_dummy 函数上设置一个断点。查看它是否真的被调用了 2400 万次,如果是,那么它是从哪里调用的。

此外,您能否确认这是 crtbegin.o 中的 frame_dummy,而不是其他 frame_dummy?

这是 the source for frame_dummy in crtbegin.c -- 根据我对代码的阅读,它应该只被调用一次。

此外,我假设您的程序运行并产生了正确的结果? (特别是,如果您的程序中存在内存错误,那么您可能会遇到一些非常奇怪的行为。)

关于c++ - frame_dummy 在分析上下文中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444847/

相关文章:

c++ - 模板参数的引用变量的问题

C++,创建 vector 的 vector ?

c++ - 全局重命名原始数据类型?

javascript - 如何调试非常慢的网站模板(客户端)?

MySQL SQL 查询分析和查询成本工具和技术

c++ - 如何将 "tighten up"参数传递给模板化函数?

c++ - 使用 g++ 制作静态库的优化和标志

c++ - 从 constexpr 函数返回一个类需要使用 g++ 的 virtual 关键字

c++ - 在 Cygwin 中配置 clang++ 以使用 g++/gcc STL header 的最简单方法?

linux - 用awk解析/proc/pid/smaps