问题描述
我正在 x86 上使用专有的 3rd 方库在 Ubuntu Linux 上工作。这个库使用线程。它是一个带有 C++ 包装器的 C 库,但只记录了 C++ API,并且给定的示例程序仅使用 C++ API - 但是,我想使用 C API。由于大多数(甚至全部?)C++ 代码似乎都在头文件中,因此我可以查找“幕后”进行的 C 调用并编写我的 C 代码。不幸的是,有些东西在我的代码中不起作用,所以我尝试 ltrace
示例程序以准确查看 C 调用的内容和顺序:
ltrace -f -l lib3rdparty.so ./ExampleProgram ExampleArgs
然而,它只显示了一些 C 调用,而不是全部。实际上看起来这些调用甚至不是从 C++ 接口进行的(根据 gdb
至少其中一个是由 C API 函数之一在内部进行的)。 lib3rdparty.so
没有符号表:
$ file lib3rdparty.so
lib3rdparty.so: : ELF 64-bit LSB shared object,x86-64,version 1 (GNU/Linux),dynamically linked,BuildID[sha1]=d29867259007394a1f532720c2073578b27a41e5,stripped
为什么 ltrace
不显示所有调用,只显示一些调用?我需要启用某些东西吗?我将尝试从 gdb
会话中收集 C 调用,但是在建立网络连接时,恐怕会遇到超时。还有其他方法可以记录对特定库进行的调用吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)