相关疑难解决方法(0)

如何使用GDB和QEMU调试Linux内核?

我是内核开发的新手,我想知道如何使用QEMU和gdb运行/调试linux内核.我实际上正在阅读Robert Love的书,但遗憾的是它无法帮助读者如何安装适当的工具来运行或调试内核......所以我所做的就是按照本教程http://opensourceforu.efytimes.com/2011/02/kernel-development-debugging-using-eclipse /.我正在使用eclipse作为IDE在内核上开发,但我想首先让它在QEMU/gdb下运行.所以我到目前为止所做的是:

1)用以下代码编译内核:

make defconfig (then setting the CONFIG_DEBUG_INFO=y in the .config)
make -j4
Run Code Online (Sandbox Code Playgroud)

2)编译完成后,我使用以下命令运行Qemu:

qemu-system-x86_64 -s -S /dev/zero -kernel /arch/x86/boot/bzImage
Run Code Online (Sandbox Code Playgroud)

它以"停止"状态启动内核

3)因此我必须使用gdb,我尝试以下命令:

gdb ./vmlinux
Run Code Online (Sandbox Code Playgroud)

正确运行但是...现在我不知道该怎么办...我知道我必须在端口1234(Qemu使用的默认端口)上使用远程调试,使用vmlinux作为符号表文件调试.

所以我的问题是:我应该怎样做才能在Qemu上运行内核,将调试器附加到它上面,从而使它们协同工作,使内核开发更轻松.

linux gdb qemu linux-kernel

33
推荐指数
2
解决办法
4万
查看次数

远程'g'数据包回复太长

我正在尝试使用kvm vm调试Linux内核.我收到一条错误消息"远程'g'数据包回复太长".我的主机是64位,我的虚拟机也是.

我的步骤:

  1. 使用custom -kernel,-initrd和-append选项启动VM.
  2. 启动gdb
  3. 执行"set architecture i386:x86-64:intel"
  4. 执行"add-symbol-file linux-3.0/vmlinux"
  5. 执行"show arch"以验证其仍然是"i386:x86-64:intel"
  6. 执行"target remote localhost:1234"
  7. 执行"继续"
  8. 按Ctrl + C,我收到上述消息.

有人遇到过这个问题吗?

gdb kvm linux-kernel

19
推荐指数
3
解决办法
2万
查看次数

直接打印到文本视频内存时出现意外输出

我正在用C开发一个内核,并在屏幕上创建了一些在视频内存上打印的内容.我预计视频内存中的第一个字节将是要打印的字符,第二个字节将告诉颜色.但我的程序有一些不同但它的工作原理!! 这是非常意外和不寻常的.

我的内核代码 -

#define VIDEO_MEM 0xb8000

void write_string( int colour, const unsigned char *string );

void main()
{
    unsigned char *vid = (unsigned char*) VIDEO_MEM;
    int i=0;
    for (i = 0; i < 2000; i++)
    {
        *vid = ' ';
        *(vid+2) = 0x1f;
        vid += 2;
    }
    write_string(0x1f,"The Kernel has been loaded successfully!!");
}

void write_string( int colour, const unsigned char *string ) {
    unsigned char *vid = (unsigned char*) VIDEO_MEM;
    while(*string != 0)
    {
        *(vid) = *string;
        *(vid+2) …
Run Code Online (Sandbox Code Playgroud)

c x86 kernel osdev bootloader

3
推荐指数
1
解决办法
279
查看次数

标签 统计

gdb ×2

linux-kernel ×2

bootloader ×1

c ×1

kernel ×1

kvm ×1

linux ×1

osdev ×1

qemu ×1

x86 ×1