问题标签 [sprof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
15934 浏览

linux - 如何使用sprof?

请举例说明?

0 投票
2 回答
1248 浏览

linux - sprof "PLTREL 未找到错误"

我正在尝试分析我们的共享库,但是每当我设置了环境变量 LD_PROFILE 时,我都会得到“PLTREL not found in object”。是什么赋予了?我是否缺少某种链接器标志或什么?互联网上似乎没有关于此的信息。sprof 的手册页长约 10 个字。

0 投票
3 回答
28721 浏览

c - gprof:如何为链接到主程序的共享库中的函数生成调用图

我正在研究Linux环境。我有两个“C”源包 train 和 test_train。

  1. train 包编译时生成 libtrain.so
  2. test_train 链接到 libtrain.so 并生成可执行的 train-test

现在我想使用 gprof 生成一个调用图,它显示了主程序以及 libtrain.so 中的函数调用序列

我正在使用 -pg 选项编译和链接这两个包,调试级别为 o0。在我执行 ./train-test 之后,会生成 gmon.out。然后我做:

在这里,输出显示了 train-test 中函数的调用图,而不是 libtrain.so 中的函数调用图

可能是什么问题呢 ?

0 投票
3 回答
7136 浏览

shared-libraries - 是什么导致 sprof 抱怨“ld.so 检测到不一致”?

我正在尝试使用 sprof 来分析一些软件(ossim),其中几乎所有代码都在共享库中。我已经生成了一个分析文件,但是当我运行 sprof 时,我收到以下错误:

我遵循的说明说我需要 libc 版本至少 2.5-34,我有 libc 版本 2.12.2(Gentoo,内核 2.6.36-r5)。

我找不到关于错误意味着什么或(更有趣的是)如何修复它的任何解释,唯一半相关的谷歌结果是旧版本 Skype 中的错误。

0 投票
1 回答
934 浏览

c++ - sprof 如何找到我的共享库

我在 /tmp 文件夹中创建了一个共享库“mylib.so”。我想分析 mylib.so。为此,我采取了以下步骤

  1. 导出 LD_PROFILE_OUTPUT=${PWD}
  2. 导出 LD_PROFILE=mylib.so
  3. 导出 LD_LIBRARY_PATH=/tmp
  4. 执行 my_app,它链接到 mylib.so

在这 4 个步骤之后,我“应该”在 /tmp 文件夹中有一个 mylib.so.profile。但没有这样的文件。我怀疑 sprof 无法找到 mylib.so。我如何告诉 sprof 在 /tmp 文件夹中查找 mylib.so?我正在使用 redhat 企业版 linux 5.0。

0 投票
1 回答
1279 浏览

c++ - 如何在没有 sprof 的情况下分析动态链接库?

我在分析动态库时遇到了一些麻烦,而且我似乎找不到任何使用过 sprof 的人。

有人知道可以为动态链接库提供调用图的替代工具吗?

0 投票
1 回答
113 浏览

linux - 这些导出变量的默认值是什么?

我尝试使用以下步骤设置 sprof(遵循此http://greg-n-blog.blogspot.com/2010/01/profiling-shared-library-on-linux-using.html )。现在我的程序将无法运行。我需要执行哪些步骤才能撤消以下操作?

2) 导出 LD_PROFILE_OUTPUT= pwd
3) 导出 LD_PROFILE=libmylib.so
4) rm -f $LD_PROFILE.profile

0 投票
1 回答
1748 浏览

linux - 使用 LD_PROFILE 分析预加载的共享库

我目前正在尝试使用 LD_PROFILE 环境变量来分析预加载的共享库。

在使用预加载的库运行应用程序(在我的情况下为 ncat)之前,我使用“-g”标志编译库并导出 LD_PROFILE_OUTPUT 和 LD_PROFILE。因此,更准确地说,我所做的是以下内容:

  1. 使用“-g”标志编译共享库 libexample.so。
  2. export LD_PROFILE_OUTPUT=`pwd`
  3. export LD_PROFILE=libexample.so
  4. LD_PRELOAD=`pwd`/libexample.so ncat ...

预加载本身确实有效,并且使用了我的库,但没有创建文件 libexample.so.profile。如果我export LD_PROFILE=libc.so.6改用,则有一个文件 libc.so.6.profile 符合预期。

这是结合 LD_PRELOAD 和 LD_PROFILE 的问题还是我可能做错了什么?

如果有任何相关性,我在 CentOS 6.4 上使用 glibc v2.12。

非常感谢!

0 投票
1 回答
225 浏览

c++ - sprof 平面配置文件名称列具有丑陋的格式

我尝试使用 sprof 分析共享库提供的函数。分析工作但包含函数名称的列的格式非常难看。例如,我使用的是 boost 提供的 unordered_map。平面轮廓中的关联条目是:

我使用了与sprof手册页中描述的相同的命令。我只是改变了路径。整个配置文件很难阅读,因为无法清楚地看到名称空间、类名、函数名等。

我尝试了sprof手册页的小例子,效果很好。

有谁知道为什么 name 列在这里的格式如此难看?

0 投票
0 回答
272 浏览

c++ - 使用 sprof 分析 OpenCV

我有这个基本的 OpenCV 代码:

我想分析它以使其cv::imread并行(并尝试对许多其他功能做同样的事情。

阅读这篇文章,我应该做些什么来分析共享库(在我的例子中是 opencv)我应该:

1) 在调试 (-g) 模式下编译您的共享库 (libmylib.so)。没有-pg。2) export LD_PROFILE_OUTPUT= pwd3) export LD_PROFILE=libmylib.so 4) rm -f $LD_PROFILE.profile 4) 执行加载 libmylib.so 的程序 5) sprof PATH-TO-LIB/$LD_PROFILE $LD_PROFILE.profile -p >日志 6) 查看日志。

我有一些问题:

  1. 我现在如何调用哪个共享库cv::imread
  2. 我不知道是否cmake -DCMAKE_BUILD_TYPE=DEBUG ...包含-g(实际上我不这么认为)。在这里阅读我可以通过编辑来做到这一点CMakeLists.txt

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")

但是不知道在哪里设置CMakeLists.txt