我正在尝试对一个我没有编写的C++应用程序进行剖析,以便了解主要计算点的位置。我不是C++专家,更不是C++调试/剖析专家。我相信我遇到了动态库的(常见?)问题。
我使用以下命令(在OS X上使用G++)编译链接到Google CPU Profiler:(链接到文档)
我使用以下命令(在OS X上使用G++)编译链接到Google CPU Profiler:(链接到文档)
env LIBS=-lprofiler ./configure
make
make install
然后我运行以下命令对已安装的应用程序(jags)进行分析:
env CPUPROFILE=./jags.prof /usr/local/bin/jags regression.cmd
pprof /usr/local/bin/jags jags.prof
很不幸,我遇到了错误:
pprof /usr/local/bin/jags jags.prof Can't exec "objdump": No such file or directory at /usr/local/bin/pprof line 2833.
objdump /System/Library/Frameworks/Accelerate.framework/Versions/A/ Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib: No such file or directory
该程序动态链接到 libLAPACK.dylib。 因此,prof
似乎无法理解它(?)。 我考虑尝试静态链接,但与该程序关联的文档说不可能在 LAPACK 或 BLAS 中进行静态链接(这是两个所需库)。
有没有一种方法可以使分析器忽略 libLAPACK? 如果它不能在 libLAPACK 中进行采样,那也没关系。或者我该如何让分析工具正常工作呢?
objdump'。它使用
otool'代替。如果有人知道解决方案,请告诉我... - Tristan