有没有办法避免 Google 性能工具将文件列为“??:?”,即无法找到包含它报告的功能的文件?如何确定哪个库包含被调用的函数?
$ env LD_PRELOAD="/usr/lib/libprofiler.so.0" \
CPUPROFILE=output.prof python script.py
$ google-pprof --text --files /usr/bin/python output.prof
Using local file /usr/bin/python.
Using local file output.prof.
Removing _L_unlock_13 from all stack traces.
Total: 433 samples
362 83.6% 83.6% 362 83.6% dtrsm_ ??:?
58 13.4% 97.0% 58 13.4% dgemm_ ??:?
1 0.2% 97.2% 1 0.2% PyDict_GetItem /.../Objects/dictobject.c
1 0.2% 97.5% 1 0.2% PyParser_AddToken /.../Parser/parser.c
...
我的目标是能够在具有许多已编译 C 扩展模块的 python 包中分析 C 代码。在上面的玩具示例中,我将如何追踪“dtrsm_”的定义位置?如果有多个加载的库包含具有相同名称的函数,有没有办法判断正在调用哪个版本?