Debugging 使用Bochs和x2B进行调试;GDB:“是的;找不到当前函数“的边界”;?

Debugging 使用Bochs和x2B进行调试;GDB:“是的;找不到当前函数“的边界”;?,debugging,operating-system,gdb,bochs,Debugging,Operating System,Gdb,Bochs,我正在编写操作系统,在调试代码时遇到了问题。我正在使用GDB连接到Bochs的GDB存根,以“远程”调试我的内核。连接工作正常,从内核文件加载调试符号也是如此。我为kmain函数设置了一个断点,该断点已成功定位,并且调试器正确地中断(在我的内核中)。然而,我无法通过代码“单步”或“下一步”,GDB也无法确定哪一行代码是当前行 当我尝试“step”时,我得到以下消息:“找不到当前函数的边界”。这是我在任何时候收到的唯一错误消息 我的代码是用GCC编译的,带有-g标志(我用GCC选项尝试了其他类型的

我正在编写操作系统,在调试代码时遇到了问题。我正在使用GDB连接到Bochs的GDB存根,以“远程”调试我的内核。连接工作正常,从内核文件加载调试符号也是如此。我为kmain函数设置了一个断点,该断点已成功定位,并且调试器正确地中断(在我的内核中)。然而,我无法通过代码“单步”或“下一步”,GDB也无法确定哪一行代码是当前行

当我尝试“step”时,我得到以下消息:“找不到当前函数的边界”。这是我在任何时候收到的唯一错误消息

我的代码是用GCC编译的,带有-g标志(我用GCC选项尝试了其他类型的调试信息;没有一个是有效的)。我尝试了阅读GDB手册,以及搜索答案,我完全被难倒了。任何帮助都将是惊人的

谢谢

谷歌抛出“这是因为当你连接到gdbserver时,进程 调试尚未完成C启动代码“。。。描述为嵌入式设备编码的过程,这可能会有所帮助吗

如果你找到了答案,请在这里发布,因为我也想知道问题的解决方案是什么。

谷歌抛出“这是因为当你连接到gdbserver时 调试尚未完成C启动代码“。。。描述为嵌入式设备编码的过程,这可能会有所帮助吗


如果您找到了答案,请在这里发布,因为我也想知道问题的解决方案。

好吧,我已经开始调试了,但我不得不切换模拟器。我能够让GDB与Qemu一起工作,尽管我在这方面也有问题。为了让GDB连接到Qemu gdbserver,我必须将以下选项传递给Qemu:“-GDB tcp::1234,ipv4”。我花了很长时间才弄明白。。。调试现在工作得很好

嗯,我开始调试了,但我不得不切换模拟器。我能够让GDB与Qemu一起工作,尽管我在这方面也有问题。为了让GDB连接到Qemu gdbserver,我必须将以下选项传递给Qemu:“-GDB tcp::1234,ipv4”。我花了很长时间才弄明白。。。调试现在工作得很好

我不知道为什么,但启用gdb存根的bochs似乎对配置选项很挑剔。在某些系统上,以下选项将使其中断:
--enable-x86-64,--enable-vmx

我不知道为什么,但启用gdb存根的bochs似乎对配置选项很挑剔。在某些系统上,以下选项将使其中断:
--enable-x86-64,--enable-vmx

我已经遇到了第一个链接,建议的解决方案与我使用gdb所做的差不多(除了在我的kmain而不是“main”处中断)。我知道它也在我的内核中崩溃。第二个链接基本上让我重新检查我的堆栈是否一切正常,据我所知,确实如此。谢谢你的回复!我已经遇到了第一个链接,建议的解决方案与我在gdb上所做的差不多(除了在我的kmain而不是“main”处中断)。我知道它也在我的内核中崩溃。第二个链接基本上让我重新检查我的堆栈是否一切正常,据我所知,确实如此。谢谢你的回复!谢谢你发布答案。祝你操作系统好运。谢谢你发布答案。祝操作系统好运。