我正在使用我的源代码的供应商API,我可以设置断点并且它们打得很好,但是如果我尝试在gdb中调用函数(通过其名称),它会说“入口点地址未知”。这是什么意思,是否有任何解决方法?我试过谷歌搜索,但没有找到任何有用的东西。非常感谢您的帮助。下一步我想使用objdump获取函数的地址,然后尝试直接调用地址,如果它工作。但我不确切知道如何做到这一点,请在这里指导我,供应商库与我自己的程序动态链接
编辑1: 在做了“信息地址”功能“”之后,我试着像“call(*”address“)(params)那样调用”,仍然显示相同的错误,请注意它确实知道函数地址。
答案 0 :(得分:2)
这是一个不起眼的人!
当进行较差的调用时,gdb有几个选项可以放置它创建的虚拟堆栈帧。在你的情况下,它选择“入口点” - 基本上(我认为)_start的内存,执行一次然后再也不用了。这种选择似乎是特定于架构的。
在您的情况下,gdb找不到入口点。如果您从未使用过“file”命令,或者您正在调试.o文件而不是真正的可执行文件,则会发生这种情况,但似乎它可能会出现在其他一些更加模糊的场景中。