搭建linux-0.11调试环境

平台:ubuntu 16.04 desktop

本例在VirtualBox虚拟机上使用ubuntu 16.04 desktop。

1. 安装调试环境

$ sudo apt update
$ sudo apt install build-essential gdb qemu unzip git wget
# 以下可选
$ sudo apt install bc flex bison gawk texinfo libelf-dev libncurses5-dev

查看gcc和gdb版本:

$ gcc -v
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)

$ gdb -v
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1

2. 安装工具

本例使用vs code,由于ubuntu 16.04上的libnss3版本较旧,无法成功安装新版vs code,这里选择一个旧版本安装:

我下载的是v1.63版本的,测试可以正常使用,你可以尝试其它版本,下载地址:

[https://code.visualstudio.com/updates/v1_63],进入后选择Downloads: Linux deb进行下载.

安装:

$ sudo dpkg -i code_xxxx.deb

启动之后,安装一下插件:

1). C/C++插件,开发者是:MS官方;

2). GDB插件,开发者是:DamianKoper;

3. 下载源码

有一个网址,可以下载到:[http://www.oldlinux.org/]

但本例使用别人修改过的一个版本:[https://github.com/yuan-xy/Linux-0.11],使用的是qemu进行仿真调试。

$ git clone https://github.com/yuan-xy/Linux-0.11.git

下载完成后,在Linux-0.11是根目录进行编译和vs code调试做配置:

$ cd Linux-0.11/
$ make $ mkdir .vscode $ cd .vscode/ $ touch launch.json $ touch task.json

launch.json填入以下内容:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/tools/system",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "run"
        }
    ]
}

task.json填入以下内容:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "run",
            "type": "shell",
            "command": "make && make debug",
            "isBackground": true
        }
    ]
}

4. Debug

以Linux-0.11/init/main.c为例:

在vs code中找到main.c中的main函数,在其内容的第一行(ROOT_DEV = ORIG_ROOT_DEV;)设置一个断点,可以用鼠标或者快捷键"F9",然后点击debug按钮或者快捷键"Ctrl + Shift + D",进入debug模式,正常的话,就可以调试了。

快捷键"F10": step over;

快捷键"F11": step in.

posted @ 2023-10-31 15:32  this毛豆  阅读(290)  评论(0编辑  收藏  举报