linux 内核学习7-通过QEMU调试ARMV8的Linux内核

linux 内核学习7-通过QEMU调试ARMV8的Linux内核

1. 准备工作

$ sudo apt-get install gcc-aarch64-linux-gnu gcc-5-aarch64-linux-gnu

2. 切换GCC版本

默认的GCC版本是7.+的版本,现在要替换为5.+的版本

  1. 设置gcc-5的版本
sudo update-alternatives  --install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-5 5 

  1. 设置gcc-7的版本
sudo update-alternatives  --install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-7 7

  1. 选择GCC-5的版本
 $ sudo update-alternatives --config aarch64-linux-gnu-gcc

There are 2 choices for the alternative aarch64-linux-gnu-gcc (providing /usr/bin/aarch64-linux-gnu-gcc).

  Selection    Path                              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/aarch64-linux-gnu-gcc-7   7         auto mode
  1            /usr/bin/aarch64-linux-gnu-gcc-5   5         manual mode
  2            /usr/bin/aarch64-linux-gnu-gcc-7   7         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/aarch64-linux-gnu-gcc-5 to provide /usr/bin/aarch64-linux-gnu-gcc (aarch64-linux-gnu-gcc) in manual mode
  1. 检查aarch64-linux-gnu-gcc版本是否为gcc-5的版本
$ aarch64-linux-gnu-gcc -v

Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/aarch64-linux-gnu/5/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.5.0-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --en
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 VS Code 中使用 GDB 调试 Linux 内核源码的步骤如下: 1. 安装插件:首先需要在 VS Code 中安装插件 "Native Debug",该插件提供了对 GDB 的支持。 2. 配置工作目录:在 VS Code 中打开 Linux 内核源码所在的目录,并在 VS Code 中打开一个终端,进入到内核源码目录中。 3. 生成内核配置:使用 "make menuconfig" 命令生成内核配置,可以根据需要选择需要编译的内核模块。 4. 编译内核:使用 "make -j4" 命令编译内核,其中 "-j4" 表示使用 4 个线程进行编译。 5. 启动 GDB:在终端中输入 "gdb ./vmlinux" 命令启动 GDB,其中 "vmlinux" 是内核文件名。 6. 配置 GDB:在 GDB 中输入以下命令进行配置: * "set architecture i386:x86-64:intel":设置架构为 x86-64。 * "set sysroot /usr/src/linux":设置系统根路径为内核源码路径。 * "file vmlinux":设置内核文件名。 * "target remote :1234":连接到远程目标,端口号为 1234。 7. 启动虚拟机:在另一个终端中启动虚拟机,使用以下命令: ``` qemu-system-x86_64 -s -S -kernel arch/x86/boot/bzImage -nographic ``` 其中 "-s" 表示开启 GDB 服务器,"-S" 表示启动时暂停虚拟机,"-kernel" 指定内核文件名,"-nographic" 表示不使用图形界面。 8. 调试内核:在 GDB 中输入 "continue" 命令,让虚拟机继续执行,即可开始调试内核。 在调试过程中,可以使用 GDB 提供的各种命令进行调试,例如 "break" 设置断点,"step" 单步执行,"print" 打印变量值等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值