Linux 使用LD_PROFILE分析预加载的共享库
我目前正试图使用LD_profile环境变量分析预加载的共享库 在使用预加载的库运行应用程序(在我的例子中是ncat)之前,我使用“-g”标志编译库并导出LD_PROFILE_输出以及LD_PROFILE。因此,更确切地说,我所做的是:Linux 使用LD_PROFILE分析预加载的共享库,linux,ld,sprof,Linux,Ld,Sprof,我目前正试图使用LD_profile环境变量分析预加载的共享库 在使用预加载的库运行应用程序(在我的例子中是ncat)之前,我使用“-g”标志编译库并导出LD_PROFILE_输出以及LD_PROFILE。因此,更确切地说,我所做的是: 使用“-g”标志编译共享库libexample.so export LD\u PROFILE\u OUTPUT=`pwd` export LD_PROFILE=libexample.so 运行LD\u PRELOAD=`pwd`/libexample.so nc
export LD\u PROFILE\u OUTPUT=`pwd`
export LD_PROFILE=libexample.so
LD\u PRELOAD=`pwd`/libexample.so ncat…
export LD_PROFILE=libc.so.6
,则会出现一个预期的libc.so.6.PROFILE文件
这是组合LD_预加载和LD_配置文件的问题还是我可能做错了什么
我在CentOS 6.4上使用的是glibc v2.12,如果有任何关联的话
非常感谢 对不起,我不知道为什么LD_PROFILE不能与LD_PRELOAD一起工作 但是,对于使用-g编译的评测二进制文件,我非常喜欢valgrind工具和Graphical工具kcachegrind valgrind--tool=callgrind/path/to/some/binary带选项 将创建一个名为callgrind.out.1234的文件,其中1234是程序运行时的pid。可以使用以下方法分析该文件: kcachegrind调用grind.out.1234 在kcachegrind中,您将很容易看到大部分CPU时间花费在哪些函数中,被调用方映射也以nise图形方式显示了这一点。调用图可能有助于理解程序是如何工作的。您甚至可以查看源代码,查看每行上花费了多少CPU时间 我希望你会发现valgrind很有用,即使这不是你的LD_档案问题的答案。valgrind的缺点是,当valgrind用于评测和内存检查时,它会减慢速度