问题标签 [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.
linux - 如何使用sprof?
请举例说明?
linux - sprof "PLTREL 未找到错误"
我正在尝试分析我们的共享库,但是每当我设置了环境变量 LD_PROFILE 时,我都会得到“PLTREL not found in object”。是什么赋予了?我是否缺少某种链接器标志或什么?互联网上似乎没有关于此的信息。sprof 的手册页长约 10 个字。
c - gprof:如何为链接到主程序的共享库中的函数生成调用图
我正在研究Linux环境。我有两个“C”源包 train 和 test_train。
- train 包编译时生成 libtrain.so
- test_train 链接到 libtrain.so 并生成可执行的 train-test
现在我想使用 gprof 生成一个调用图,它显示了主程序以及 libtrain.so 中的函数调用序列
我正在使用 -pg 选项编译和链接这两个包,调试级别为 o0。在我执行 ./train-test 之后,会生成 gmon.out。然后我做:
在这里,输出显示了 train-test 中函数的调用图,而不是 libtrain.so 中的函数调用图
可能是什么问题呢 ?
shared-libraries - 是什么导致 sprof 抱怨“ld.so 检测到不一致”?
我正在尝试使用 sprof 来分析一些软件(ossim),其中几乎所有代码都在共享库中。我已经生成了一个分析文件,但是当我运行 sprof 时,我收到以下错误:
我遵循的说明说我需要 libc 版本至少 2.5-34,我有 libc 版本 2.12.2(Gentoo,内核 2.6.36-r5)。
我找不到关于错误意味着什么或(更有趣的是)如何修复它的任何解释,唯一半相关的谷歌结果是旧版本 Skype 中的错误。
c++ - sprof 如何找到我的共享库
我在 /tmp 文件夹中创建了一个共享库“mylib.so”。我想分析 mylib.so。为此,我采取了以下步骤
- 导出 LD_PROFILE_OUTPUT=${PWD}
- 导出 LD_PROFILE=mylib.so
- 导出 LD_LIBRARY_PATH=/tmp
- 执行 my_app,它链接到 mylib.so
在这 4 个步骤之后,我“应该”在 /tmp 文件夹中有一个 mylib.so.profile。但没有这样的文件。我怀疑 sprof 无法找到 mylib.so。我如何告诉 sprof 在 /tmp 文件夹中查找 mylib.so?我正在使用 redhat 企业版 linux 5.0。
c++ - 如何在没有 sprof 的情况下分析动态链接库?
我在分析动态库时遇到了一些麻烦,而且我似乎找不到任何使用过 sprof 的人。
有人知道可以为动态链接库提供调用图的替代工具吗?
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
linux - 使用 LD_PROFILE 分析预加载的共享库
我目前正在尝试使用 LD_PROFILE 环境变量来分析预加载的共享库。
在使用预加载的库运行应用程序(在我的情况下为 ncat)之前,我使用“-g”标志编译库并导出 LD_PROFILE_OUTPUT 和 LD_PROFILE。因此,更准确地说,我所做的是以下内容:
- 使用“-g”标志编译共享库 libexample.so。
export LD_PROFILE_OUTPUT=`pwd`
export LD_PROFILE=libexample.so
- 跑
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。
非常感谢!
c++ - sprof 平面配置文件名称列具有丑陋的格式
我尝试使用 sprof 分析共享库提供的函数。分析工作但包含函数名称的列的格式非常难看。例如,我使用的是 boost 提供的 unordered_map。平面轮廓中的关联条目是:
我使用了与sprof手册页中描述的相同的命令。我只是改变了路径。整个配置文件很难阅读,因为无法清楚地看到名称空间、类名、函数名等。
我尝试了sprof手册页的小例子,效果很好。
有谁知道为什么 name 列在这里的格式如此难看?
c++ - 使用 sprof 分析 OpenCV
我有这个基本的 OpenCV 代码:
我想分析它以使其cv::imread
并行(并尝试对许多其他功能做同样的事情。
阅读这篇文章,我应该做些什么来分析共享库(在我的例子中是 opencv)我应该:
1) 在调试 (-g) 模式下编译您的共享库 (libmylib.so)。没有-pg。2) export LD_PROFILE_OUTPUT=
pwd
3) 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) 查看日志。
我有一些问题:
- 我现在如何调用哪个共享库
cv::imread
? - 我不知道是否
cmake -DCMAKE_BUILD_TYPE=DEBUG ...
包含-g
(实际上我不这么认为)。在这里阅读我可以通过编辑来做到这一点CMakeLists.txt
:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
但是不知道在哪里设置CMakeLists.txt