c++ - 无法分析库中的线程

标签 c++ linux gperftools

我正在尝试使用 Google Performance Tools ,特别是 64 位 Ubuntu 14.04 存储库中的官方版本,用于调试应用程序及其关联的 .so 库。

以最小的更改运行,只需确保 -g 已设置,就可以找到踪迹,但只有来自主要可执行文件的几个符号。按照 the rather minimal documentation 中的建议将 ProfilerRegisterThread() 添加到库中的线程实际上让事情变得更糟,输出的符号更少,只有十六进制地址。

如何正确分析库中的线程?

最佳答案

pprof 使用 addr2line 进行地址到符号的解析。如果启用了 ASLR,addr2line 将不起作用。尝试禁用 ASLR。

另一种可能性是为 pprof 实现 HTTP 服务器接口(interface),并使用类似 libbacktrace 的东西来实现地址到符号的解析。

关于c++ - 无法分析库中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147049/

相关文章:

c++ - C++ 中强制类型推导的示例

java - 从java运行windows 10 ubuntu bash命令

c++ - 重载 operator[] 是如何工作的?

c++ - 访问连续 L1 高速缓存的代码比访问 3x 非连续 L1 内存的代码慢

linux -/proc 或/sys 中的磁盘统计信息

android - 蓝牙 Bluez : Unable to create crypto contex

c++ - tcmalloc 巨大的性能差异

c++ - gperftools 与 CPUPROFILE_FREQUENCY 不准确

c++ - 数据类型为 : float, float4、float8、double、double4、int、int4、int8 的模板