使用Bochs + GDB进行调试:“找不到当前函数的界限”?

时间:2010-06-21 06:41:51

标签: debugging operating-system gdb bochs

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

当我尝试“步”时,我收到以下消息:“找不到当前功能的界限”。这是我在任何时候得到的唯一错误信息。

我的代码是在GCC中用-g标志编译的(我已经尝试过使用GCC选项的其他类型的调试信息;没有一个工作过。)我试过查看GDB手册,以及搜索答案,我完全难过了。任何帮助都会很棒。

谢谢!

3 个答案:

答案 0 :(得分:3)

好吧,我调试了工作,但我不得不切换模拟器。我能够让GDB与Qemu一起工作,尽管我也遇到了问题。为了让GDB连接到Qemu gdbserver,我必须将以下选项传递给Qemu:“ - gdb tcp :: 1234,ipv4”。让我永远想清楚......调试现在完美无缺!

答案 1 :(得分:0)

谷歌搜索引发“这是因为当你附加到gdbserver时,进程下 debug尚未完成C启动代码“http://www.cygwin.com/ml/gdb/2005-03/msg00237.html ... http://www.bravegnu.org/gnu-eprog/c-startup.html描述了编码嵌入式设备的过程,这可能会有所帮助吗?

如果您找到答案,请在此处发布,因为我想知道问题的解决方案是什么。

答案 2 :(得分:0)

我不知道为什么但启用了gdb-stub的bochs似乎对配置选项很挑剔。在某些系统上,以下选项会破坏它: --enable-x86-64, - enable-vmx