草庐IT

c++ - 让 gprof 从 Qt 调试应用程序读取 gmon.out 输出的问题

我正在尝试分析我正在开发的Qt窗口应用程序,并且已经阅读了使用gprof进行分析的方法。我已经成功地将项目配置为编译并与-pg标志链接以启用分析,并且每次执行应用程序时都会输出gmon.out。但是,当我尝试运行gprof将gmon.out文件转换为可读的txt文件时,我遇到了“gmon.out太短而不能成为gmon文件”的错误消息。我试着用谷歌搜索这个问题的答案,但无济于事。这里也有人问过同样的问题,但没有给出答案。我在Windows7上为此项目使用Qt4.7.4和QtCreator2.3.0以及mingw编译器。我在.pro文件中设置的标志是:#ProfilerflagsCONFI

c++ - 如何使用 gprof 分析守护进程而不优雅地终止它?

需要分析一个用C++编写的守护进程,gprof说它需要终止进程以获取gmon.out。我想知道是否有人有想法通过ctrl-c获取gmon.out?我想找出cpu周期的热点 最佳答案 NeedtoprofileadaemonwritteninC++,gprofsaysitneedtoterminatetheprocesstogetthegmon.out.这符合调试守护进程的常规做法:提供一个开关(例如,使用命令行选项)强制守护进程在前台运行。I'mwonderinganyonehasideastogetthegmon.outwithc

c++ - 基准测试 (gprof) C++ 程序。使用eclipse环境

我遇到了以下问题。事实;-使用eclipse-使用MinGW我想对我创建的C++程序进行基准测试。我搜索谷歌然后来了;http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html然后我想添加“-pg”构建命令。但是我如何/在哪里添加它?我进入“属性-C/C++构建-发现选项”并将其添加到“编译器调用命令”(http://img515.imageshack.us/img515/3159/67826349.png),但据我在控制台中所见,它什么也没做。那我做错了什么? 最佳答案 根据您的项目

c++ - 加速gcc中的虚函数调用

使用gprof分析我的C++代码时,我发现我的大部分时间都花在了一遍又一遍地调用一个虚拟方法上。该方法本身很短,如果它不是虚拟的,则可能会被内联。除了重写所有内容以使其不是虚拟的之外,有哪些方法可以加快速度? 最佳答案 你确定时间都是通话相关的吗?成本是功能本身吗?如果是这种情况,简单的内联可能会使该函数从您的分析器中消失,但您不会看到太多加速。假设它确实是进行如此多的虚拟调用的开销,那么在不使事情成为非虚拟的情况下,您可以做的事情是有限的。如果调用有时间/标志之类的提前退出,那么我通常会使用两级方法。检查与非虚拟调用内联,仅在必要

c++ - 如何使用带有 "-fomp"和 "-pg -fprofile-create"的 gcc/gprof 分析 c++?

我很困惑是否可以使用启用了OpenMP的gcc为gprof编译/链接分析构建。据我的谷歌搜索显示,gcc文档似乎对此事保持沉默。根据实验,仅添加-fomp开关会导致启动时出现SIGPROF错误。我也不清楚http://projekt17.pub.lab.nm.ifi.lmu.de/ompp/downloads/$pkgname-$pkgver.tgz是否属于任何帮助,因为包含的文档仅引用带有简单文件的icc。如果可能的话,如何将它添加到现有的构建系统中?[注意:我是一个自学成才的新手,正在从事一个业余项目,请明确说明。谢谢。] 最佳答案

c++ - 使用 <spontaneous> 解释 gprof 输出

我试图在我的程序中找到性能问题,因此通过分析来检测代码。gprof创建一个像这样的平面配置文件:Flatprofile:Eachsamplecountsas0.01seconds.%cumulativeselfselftotaltimesecondssecondscallsms/callms/callname27.974.104.10std::_Deque_iterator::_Deque_iterator(std::_Deque_iteratorconst&)6.965.121.02std::_Deque_iterator::difference_typestd::operator-

c++ - 在 gprof 中分析单个函数

是否可以使用gprof对C++中的单个函数进行行分析?类似于:gprof-l-Ffunction_name...,这似乎不起作用。 最佳答案 这可以通过valgrind轻松完成.如果您有机会在您的开发环境中使用它,它将是一个很棒的工具。它甚至有图形界面kcachegrind. 关于c++-在gprof中分析单个函数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1214099/

c++ - _Unwind_SjLj_Unregister 和 _Unwind_SjLj_Register 是什么?

什么是_Unwind_SjLj_Unregister和_Unwind_SjLj_Register?在我的gprof报告中,我将它们列为处理器时间最高的用户。谷歌只返回提示这两个错误的人的链接。这是我报告中唯一有时间!=0的部分:Flatprofile:Eachsamplecountsas0.01seconds.%cumulativeselfselftotaltimesecondssecondscallsms/callms/callname33.330.030.03_Unwind_SjLj_Unregister22.220.050.02_Unwind_SjLj_Register11.11

c++ - `gprof` 特定代码行花费的时间

我一直在将gprof分析器与g++结合使用。我的代码中有一个函数,它封装了几个与主要函数足够相关的行为部分,因此将它们拆分成各自的函数是没有意义的。我想知道在每个代码区域花费了多少时间。所以,如果你想象代码看起来像function(){AAABBBCCC}其中A、B和C代表我感兴趣的特定代码部分,有没有办法让gprof告诉我在这些特定部分上花费了多少时间? 最佳答案 我知道这是一个老问题,但我找到了一个有趣的答案。正如Sam所说,-l选项仅适用于旧的gcc编译器。但是我发现如果用-pg-fprofile-arcs-ftest-cov

c++ - 什么是函数 __tcf_0? (在使用 gprof 和 g++ 时看到)

我们使用g++4.2.4,我正在尝试找出代码中的一些性能问题。我正在运行gprof来生成配置文件,我得到以下“奇怪”,因为最昂贵的函数是__tcf_0:Eachsamplecountsas0.01seconds.%cumulativeselfselftotaltimesecondssecondscallsms/callms/callname40.000.040.04140.0095.00__tcf_0然后此函数似乎调用了我的大部分用户函数(即,它是从main调用的函数)。我找到的最接近的解释是here,但该链接指的是静态对象和atexit,我认为这不适用于我的情况。如果有帮助,我正在使