(gdb) n Cannot find bounds of current function

Posted 小丑快学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(gdb) n Cannot find bounds of current function相关的知识,希望对你有一定的参考价值。

GDB 调试出现错误出现这样的错误,并产生 segment fault;

0x00008766 in ?? ()
(gdb) n
Cannot find bounds of current function

我遇到的问题是因为动态库链接错误而导致的,解决方案如下:

但当遇到这个问题的时候,我继续单步调试,但是当遇到某个函数的时候我发现当我使用 s 命令单步调试的时候却没法进入该函数,会出现这样的错误:

Cannot find bounds of current function

所以这个时候我们应该明白该函数实际上没有被成功调用,问题出现在调用该函数之前,因而我们需要使用 si 和 ni 通过汇编指令的方式进行调试,查看出现问题的具体的指令,看看其中能不能找到问题的根本原因;在调试的时候用 disassemble 查看执行到哪一条指令,我通过执行发现当调用这样<xxxx@plt>这样一条指令时出现段错误,其中xxx为某个函数名;

很明显这样的错误是因为动态链接符号引起的,plt的全称为Procedure Link Table, 详细可查阅动态链接相关原理;
这个时候我们已经需要明确<xxxx@plt>xxx函数所引用的动态库是否正确链接或者说我们的编译选项是否添加动态库的相关地址和选项,通过 执行:

ldd 可执行文件名

可以查看你所引用的动态库的链接情况,然后正确的链接就行;

以上是关于(gdb) n Cannot find bounds of current function的主要内容,如果未能解决你的问题,请参考以下文章

(gdb) n Cannot find bounds of current function

ErrorPageFilter cannot find RequestDispatcher

Error: Cannot find module ‘dotenv‘解决方法

Error: Cannot find module ‘dotenv‘解决方法

Error: Cannot find module ‘fs/promises‘

Error: Cannot find module ‘fs/promises‘