我希望描述CPU(尽可能的样本),尽可能小的性能影响(因此类似于GCC -pg),使用Clang编译的二进制文件.是否有替代方法使用代码检测,或产生类似于gprof的输出?
我有两个函数来查找两个矩阵的乘积:
void MultiplyMatrices_1(int **a, int **b, int **c, int n){
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
c[i][j] = c[i][j] + a[i][k]*b[k][j];
}
void MultiplyMatrices_2(int **a, int **b, int **c, int n){
for (int i = 0; i < n; i++)
for (int k = 0; k < n; k++)
for (int j = 0; j < n; j++)
c[i][j] …Run Code Online (Sandbox Code Playgroud) 在使用-pg注入gprof配置文件检测代码的选项编译我的c ++源时,编译失败并显示undefined reference to _mcount错误.
没有这个选项,一切都可以编译(并运行).我的情况有什么问题?(Solaris 10 SPARC平台)
我试图使用命令行工具在Mac OS X配置文件的C/C++代码,我使用-pg与选项gcc来运行gprof在Linux上,但我似乎无法找到gprof在Mac上,即使我有这个页面的说明:其他命令行工具(iOS)或其他命令行工具(mac).
gprof:Produces execution profiles based on an execution analysis of a program.
Run Code Online (Sandbox Code Playgroud)
我安装的命令行工具,所以其他的命令行工具,如otool和atos可用.我用谷歌搜索这个页面(https://apple.stackexchange.com/questions/154289/installing-gprof-on-mac),说不gprof支持,但我不确定我什么时候有一个描述该工具的Apple doc ; 无论如何,我试图用来brew下载gprof,但它没有用.
我发现尝试在Mac上使用带有C++代码的gprof,但我没有输出instruments -t.我还在mac os x上发现了profiling c ++,但我不想打开Instruments,因为我想自动化一些进程并尝试保持跨平台系统.
gprof?除了在编译时使用-p选项然后使用gprof时,有没有人知道用于分析OCaml代码的程序?我问这个问题是为了检查0.01秒的采样时间是否可以进一步降低?
这是一个臃肿的问题,所以我提前道歉.我很好奇如何gprof在低技术水平上工作.我理解它是由计时器完成的,但是为什么可执行文件需要专门编译才能被分析?编译是否会导致为统计分配空间?
此外,时间如何完成?
运行可执行文件的默认配置文件,并调用该文件gmon.out.有没有办法指定新的位置?
我在i386/linux2.6上使用gcc 3.4.6
我在Mac OSX上运行,版本10.8.5(Mountain Lion).我有以下简单的C++代码.
main.cpp:
#include <iostream>
int main ()
{
std::cout << "Hello world!"<<std::endl;
std::cout << "Goodbye world!"<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正试图让gprof在我的电脑上工作.如手册所示,我在我的终端中输入以下两行:
g++ -g -pg main.cpp -o a.out
./a.out
Run Code Online (Sandbox Code Playgroud)
但是,这不会生成gmon.out应该的文件.当我尝试gprof在终端输入时,它说:
gprof: can't open: gmon.out (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
这是预料到的,因为gmon.out不存在......
关于我做错了什么的任何想法?
编辑:其他一些可能有帮助的事情:
我的朋友,有一个类似的OS X版本(我可以让他后来确认),以及完全相同的版本,g++并且gprof能够gprof成功使用,如我所概述的那样.
我使用的是旧版本,g++但我在网上看到更新到新版本并没有帮助.
a.out完美的作品,它打印出Hello world!和Goodbye world!.我还尝试使用更复杂的C++程序和几个类,它仍然有同样的问题.一切都编译并正常运行,但没有生成gmon.out文件.
我正在尝试使用gprof来编写我编写的c ++应用程序,但我无法弄清楚如何下载和安装它.我用谷歌搜索了我能想到的一切,甚至找不到下载链接.有人请帮忙!
我想使用 gcc 的 gprof 逐行分析。但是在编译我的程序、运行它并执行之后,gprof -l binary_name我收到如下消息:
gprof: somebody miscounted: ltab.len=9403 instead of 9391
Run Code Online (Sandbox Code Playgroud)
gprof binary_name运行没有错误,但我无法使用该-l选项运行。我无法找到这方面的文档。谷歌自动完成表明我不是第一个收到此错误的人,但我找不到任何相关线程。我尝试过 g++-9 g++-10 和 g++-11。我尝试过使用-g和进行编译-ggdb。我认为也许 gprof 不喜欢我的程序是多线程的,但即使删除 OpenMP 依赖项并告诉 libtorch 使用 1 个线程,我也会得到相同的行为。
我怀疑这个错误不应该被最终用户看到,因为它没有给出解决方案的提示,并提到ltab.len这很可能是用户不会熟悉的 gcc 代码中的变量。