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

linux – 使用LD_PROFILE分析预加载的共享库,第1张

概述我目前正在尝试使用LD_PROFILE环境变量来分析加载共享库. 我使用“-g”标志编译库并导出LD_PROFILE_OUTPUT以及LD_PROFILE,然后运行带有预加载库的应用程序(在我的情况下为ncat).所以,更准确地说,我做的是以下内容: >使用“-g”标志编译共享库libexample.so. > export LD_PROFILE_OUTPUT =`pwd` > export 我目前正在尝试使用LD_PROfile环境变量来分析预加载的共享库.

我使用“-g”标志编译库并导出LD_PROfile_OUTPUT以及LD_PROfile,然后运行带有预加载库的应用程序(在我的情况下为ncat).所以,更准确地说,我做的是以下内容:

>使用“-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.

非常感谢!

解决方法 抱歉,我不知道为什么LD_PROfile不能与LD_PRELOAD一起使用的答案.

但是,对于使用-g编译的二进制文件的分析,我非常喜欢工具valgrind和grAPIchal工具kcachegrind.

valgrind –tool = callgrind / path / to / some / binary with options

将创建一个名为callgrind.out.1234的文件,其中1234是程序运行时的pID.该文件可以用以下方式分析:

kcachegrind callgrind.out.1234

在kcachegrind中,您将很容易地看到大多数cpu时间用于哪些函数,被调用者映射也以一种新的图形方式显示.调用图可能有助于理解程序的工作原理.您甚至可以查看源代码以查看每行花费的cpu时间.

我希望你会发现valgrind很有用,即使这不是你的LD_PROfile问题的答案. valgrind的缺点是当valgrind用于分析和内存检查时,它会减慢速度.

总结

以上是内存溢出为你收集整理的linux – 使用LD_PROFILE分析预加载的共享库全部内容,希望文章能够帮你解决linux – 使用LD_PROFILE分析预加载的共享库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1029211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存