【发布时间】:2013-01-27 16:29:33
【问题描述】:
我正在使用我拥有的供应商 API,我可以设置断点并且它们运行良好,但是如果我尝试在 gdb 中调用一个函数(按其名称),它会显示“入口点地址未知”。 ,这是什么意思,有什么解决方法吗?我试过谷歌搜索,但没有发现任何有用的东西。非常感谢您的帮助。下一步我正在考虑使用 objdump 获取函数的地址,然后尝试直接使用地址调用,如果它有效的话。但我不知道具体怎么做,请在这里指导我,供应商库与我自己的程序动态链接
编辑 1: 做完“信息地址”函数”后,我尝试像“调用(*”地址“)(参数)”一样调用,仍然显示相同的错误,注意它确实知道函数地址。
【问题讨论】:
-
您是否使用调试符号(即 gcc 或 clang 的
-g标志)构建了供应商库? -
@CarlNorum 如果库没有调试符号,断点会命中吗?
-
可能,是的。函数名称不是调试信息中唯一包含的内容,即使没有,也经常包含。
-
但是如果我说--b“有趣”,我可以打断点,而且我可以看到源代码,这是否意味着它有调试符号?
-
@avd - 我想是的,是的。对不起,我想我误解了你的问题。你想直接从 gdb 命令行调用函数吗?