4

我正在使用我拥有的供应商 API,我可以设置断点并且它们运行良好,但是如果我尝试在 gdb 中调用一个函数(按其名称),它会显示“入口点地址未知。”,什么是这意味着并且有任何解决方法吗?我试过谷歌搜索,但没有发现任何有用的东西。非常感谢您的帮助。下一步我正在考虑使用 objdump 获取函数的地址,然后尝试直接使用地址调用,如果它有效的话。但我不知道该怎么做,请在这里指导我,供应商库与我自己的程序动态链接

编辑1:在执行“信息地址“函数””之后,我尝试像“调用(*“地址”)(参数)”一样调用,仍然显示相同的错误,请注意它确实知道函数地址。

4

1 回答 1

2

这是一个晦涩难懂的!

当进行低级调用时,gdb 有几个选项可以将它创建的虚拟堆栈帧放在哪里。在您的情况下,它选择“入口点” - 基本上(我认为)_start 处的内存,它执行一次,然后再也不会使用。这种选择似乎是特定于架构的。

在您的情况下, gdb 找不到入口点。如果您从未使用过“文件”命令,或者您正在调试 .o 文件而不是真正的可执行文件,则可能会发生这种情况,但它似乎也可能发生在其他一些更模糊的场景中。

于 2013-05-26T19:10:19.350 回答