- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试过使用 ltrace。我尝试使用以下命令来分析程序 sampleapp
, ltrace -c -T --library=library.so --output=out 使用的 library.so 文件。 txt ./SampleApp
.但它显示上述错误。但是 library.so 是一个调试版本。所以符号表应该在那里。我尝试用 objdump --source library.so | 验证它grep CreateSocket()
。它返回使用该 CreateSocket() 函数的代码。这意味着它包含一个符号表。那为什么会出现这个错误呢?
相关帖子:measure CPU usage per second of a dynamically linked library
最佳答案
这取决于可执行文件 SampleApp
的创建方式。如果它是静态链接的,您将看到该错误。 ltrace 仅适用于动态链接的应用程序。
您可以运行 ldd SampleApp
来显示共享对象的依赖关系。它是动态链接的并且依赖于 libc,ldd
的输出将包含如下一行:
libc.so.6 => /usr/lib/libc.so.6 (0x00007fb24ac53000)
在这种情况下,您可以使用 ltrace 选项 --library=libc.so.6
它应该可以工作。但是,--library=libc.so
不会匹配(您不会收到错误,但不会匹配任何库调用)。
静态链接时,ldd SampleApp
将改为显示此输出:
not a dynamic executable
我的猜测是因为静态链接可能是错误的。 然而,重要的一点是,如果 ltrace 显示此错误,您必须从可执行文件本身(二进制文件)及其创建方式(链接器选项)开始诊断,而不是从共享库开始。
问题How does ltrace (library tracing tool) work?有一些很好的引用资料可以帮助您更多地了解 ltrace 的内部结构。
关于c++ - ltrace: 在 "library.so"中找不到 .dynsym 或 .dynstr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541049/
我尝试过使用 ltrace。我尝试使用以下命令来分析程序 sampleapp, ltrace -c -T --library=library.so --output=out 使用的 library.s
我的初步了解是: .dynamic 包含可执行文件需要加载的库 .dynsym 包含外部符号,例如 setsockopt@GLIBC_2.0 .dynstr 包含函数需求的字符串 总的来说,我对这些部
我正在维护一个可以将 ELF32 可重定位文件转换为 RDOFF2 格式的工具。 为了使此过程正常进行,我需要使用如下所示的 ld 脚本预先链接当前的输入文件: OUTPUT_FORMAT("elf3
我是一名优秀的程序员,十分优秀!