标签: gprof

使用Eclipse时在Windows上分析C代码

我知道我可以分析我的代码gprofkprofLinux上.在Windows上是否有与这些应用程序相当的替代方案?

c eclipse windows profiling gprof

8
推荐指数
1
解决办法
7424
查看次数

如何为使用SCons构建的程序构建gprof支持?

问候,

这是我的SConstruct文件:

env = Environment()
env.Append(CCFLAGS=['-g','-pg'])
env.Program(target='program1', source= ['program1.c'])
Run Code Online (Sandbox Code Playgroud)

这里还有编译的输出:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o program1.o -c -g -pg program1.c
gcc -o program1 program1.o
scons: done building targets.
Run Code Online (Sandbox Code Playgroud)

如您所见,我将"-pg"选项传递给构建环境.在我构建之后,我运行程序来生成"gmon.out",但它没有生成.

谁能证实这个问题?还是有解决方案?

谢谢.

更新:

感谢此处给出的建议,更新的工作SConstruct文件如下所示.链接器需要标志,因此要通过scons传递它,必须使用"LINKFLAGS"选项.

env = Environment()
env.Append(CCFLAGS=['-g','-pg'], LINKFLAGS=['-pg'])
env.Program(target='program1', source= ['program1.c'])
Run Code Online (Sandbox Code Playgroud)

编译输出:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o program1.o -c -g -pg program1.c
gcc -o program1 -pg program1.o
scons: …
Run Code Online (Sandbox Code Playgroud)

c scons gprof

7
推荐指数
1
解决办法
1175
查看次数

在 kcachegrind 中查看 gprof 输出

如何在 kcachegrind 中查看 gprof 的输出?这里是从 gcc 的 gmon.out 到 callgrind.out 的转换器吗?

profiling gprof callgrind kcachegrind

7
推荐指数
1
解决办法
2026
查看次数

`gprof`在特定代码行中花费的时间

我一直在使用gprof探查器g++.

我的代码中有一个函数,它封装了几个与主函数相关的行为部分,将它们分解为自己的函数是没有意义的.

我想知道每个代码区域花了多少时间.

所以,如果你想象代码看起来像

function(){
    A
    A
    A
    B
    B
    B
    C
    C
    C
}
Run Code Online (Sandbox Code Playgroud)

其中A,B和C代表我感兴趣的代码的特定部分,有没有办法gprof告诉我在这些特定部分上花了多少时间?

c++ profiling gprof

7
推荐指数
2
解决办法
6928
查看次数

-no-pie有什么用?

我正在使用GPROF在Ubuntu 17.10上进行一些c文件测试,当我使用gprof执行生成的文件(gmon.out),使用-pg选项进行编译和链接时,我得到了一个空的平面图和调用图。然而,我发现这是一个错误的gcc和我将不得不编译和文件与-no馅饼链接。

  • 编译:gcc的-c的main.c文件1.C文件2.C -pg [-no馅饼]

  • 链接:gcc的-o测试main.o文件1.O文件2.O -pg [-no馅饼]

我有gcc 7.2版本。

此选项如何工作?如果我不使用该选项,为什么图形为空?

c testing gcc profiling gprof

7
推荐指数
1
解决办法
6415
查看次数

当我用程序编译它时 -Wall 标志会做什么?

我正在遵循一个教程,该教程介绍了如何使用 gprof 分析程序,给出的命令如下

gcc -Wall -pg test_gprof.c test_gprof_new.c -o test_gprof

但它没有对这个标志给出任何解释(-Wall)

gcc compilation compiler-flags gprof

7
推荐指数
1
解决办法
8305
查看次数

什么是_Unwind_SjLj_Unregister和_Unwind_SjLj_Register?

什么是_Unwind_SjLj_Unregister和_Unwind_SjLj_Register?我在gprof报告中将它们作为我的顶级处理器时间用户.谷歌只返回抱怨这两个错误的人的链接.

这是我报告中唯一有时间的部分!= 0:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 33.33      0.03     0.03                             _Unwind_SjLj_Unregister
 22.22      0.05     0.02                             _Unwind_SjLj_Register
 11.11      0.06     0.01    13886     0.00     0.00  toint(std::string, int)
 11.11      0.07     0.01     4380     0.00     0.00  hexlify(std::string)
 11.11      0.08     0.01     2994     0.00     0.00  std::_Deque_iterator<unsigned char, unsigned char const&, unsigned char const*>::operator+(int) const
 11.11      0.09     0.01                             std::string::assign(char const*, unsigned int)
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows 7 x64,并使用代码块10.05 gcc进行编译

编辑:

启用强制程序运行64秒的函数后,它现在看起来像:

Flat profile:

Each sample counts as …
Run Code Online (Sandbox Code Playgroud)

c++ profile gprof

6
推荐指数
1
解决办法
4882
查看次数

从gprof结果中排除函数

我想从gprof生成的输出中排除一些函数.换句话说,在计算执行期间每个函数花费的百分比时间时,我不希望它们被包括在内.我在一个地方读书-E选项可以使用.

但是我正在使用gprof -E function_to_be_exluded my_program_name,但没有任何反应.手册说它是折旧的,你应该使用symspecs.然而,我浪费了半个小时试图弄清楚如何用symspecs实现它,但没有运气.任何人都可以帮助我.

c linux gprof

6
推荐指数
1
解决办法
2117
查看次数

如何使用带有"-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有任何帮助,因为包含的doc仅指含有简单文件的icc.如果可以,那么如何将其添加到现有构建系统?[注意:我是一个自学成才的新手,从事一个爱好项目,请明确.谢谢.]

c++ openmp gprof

6
推荐指数
1
解决办法
1726
查看次数

BFD:Dwarf Error:找不到第3699号缩写

我在我的电脑上安装了MinGWDistro 15.0.

当我在cmd中运行它时

g++ "snackstore.cpp" -o "snackstore.exe" -g -pg
snackstore.exe
gprof.exe "snackstore.exe" gmon.out > gmon.txt
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

BFD: Dwarf Error: Could not find abbrev number 3699.
Run Code Online (Sandbox Code Playgroud)

你能告诉我什么是错的吗?

mingw gprof

6
推荐指数
0
解决办法
948
查看次数