我使用ddd在qemu中调试JOS内核(来自mit operating system lab)。我在汇编指令上设置了一个断点,调用init.c中定义的内核主函数i386_init。当我启动内核时,ddd(gdb)在显示绿色箭头的指令上打破了;但是当我使用stepi命令时,绿色箭头消失,ddd不会打开应该包含i386_init()定义的文件。调试过程仅继续使用gdb。 ddd不遵循这个过程。更重要的是,当我打开init.c文件时,ddd显示了这个错误:
" kern / init.c \#34;的第1行位于地址0xf0100040,但不包含任何代码。\ n
我已经对这种错误做了一些研究,似乎问题来自动态库。但就我而言,没有动态库。那么是什么导致这类问题以及如何解决呢?
答案 0 :(得分:1)
问题是由我构建的交叉编译器引起的,我认为这可能有点儿错误。因为我改变了编译器,所以ddd现在工作正常。