我是靠谱客的博主 内向吐司,最近开发中收集的这篇文章主要介绍Vscode 调试arm64 linux内核,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对于linux内存系列的阅读和测试记录。

https://zhuanlan.zhihu.com/p/105069730
https://zhuanlan.zhihu.com/p/510289859

搭建arm64内核调试环境:

安装工具:
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install libncurses5-dev build-essential git bison flex libssl-dev

还要安装支持aarch64的gdb:
sudo apt-get install gdb-muliarch

下载内核:
/media/wlz/beifen/neihe$ wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.0.tar.gz
/media/wlz/beifen/neihe$ tar -xvf linux-5.0.tar.gz
/media/wlz/beifen/neihe$ cd linux-5.0/

配置+编译:
/media/wlz/beifen/neihe/linux-5.0$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
/media/wlz/beifen/neihe/linux-5.0$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8

安装qemu-arm版:
sudo apt-get install qemu-system-arm
安装的为4.2.1。

制作根文件系统:

由于初期是调试启动代码为主,所以先制作一个简单的文件系统:

https://zhuanlan.zhihu.com/p/105069730

制作完成后运行qemu:
qemu-system-aarch64 -M virt -cpu cortex-a53 -smp 2 -m 4096M -kernel ./linux-5.0/arch/arm64/boot/Image -nographic -append “console=ttyAMA0 init=/linuxrc ignore_loglevel” -initrd ./rootfs -S -gdb tcp::1234

参考https://zhuanlan.zhihu.com/p/345232459

关于qemu-system-aarch64的几个参数解释如下:

-smp 核数目
-m 物理内存大小
-kernel 内核压缩镜像位置
-initrd rootfs位置
-nographic 不使用图形界面,不加可能会因为无法启动图形界面而失败
-append cmdline启动参数
-S 在入口处阻塞CPU
-gdb tcp::xxxx 指定通信通道为 本地tcp通道(因为是在同一个机器上),端口号为xxxx,如果不需要指定端口号可以用-s 代替

此时gdbserver已启动,需在另一个窗口启动gdb并连接:

gdb-multiarch ./linux5.0/vmlinux
(gdb)target remote :1234
(gdb)break start_kernel
(gdb)continue
(gdb)step

此时基本的流程结束。

vscode调试:
https://zhuanlan.zhihu.com/p/510289859

通过vscode进行gdb调试可以更直观。

先在vscode中下载gdb扩展:
在这里插入图片描述

然后打开linux源码目录并设为工作空间:
在这里插入图片描述
Debug - configure打开configure文件并编辑:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
“version”: “0.2.0”,
“configurations”: [
{
“name”: “kernel debug”,
“type”: “cppdbg”,
“request”: “launch”,
“program”: “ w o r k s p a c e F o l d e r / v m l i n u x " , " c w d " : " {workspaceFolder}/vmlinux", "cwd": " workspaceFolder/vmlinux","cwd":"{workspaceFolder}”,
“MIMode”: “gdb”,
“miDebuggerPath”:“/usr/bin/gdb-multiarch”,
“miDebuggerServerAddress”: “localhost:1234”
}
]
}

随后和前章节类似,先开启qemu并运行gdbserver:
qemu-system-aarch64 -M virt -cpu cortex-a53 -smp 2 -m 4096M -kernel ./linux-5.0/arch/arm64/boot/Image -nographic -append “console=ttyAMA0 init=/linuxrc ignore_loglevel” -initrd ./rootfs -S -gdb tcp::1234

然后在vscode中添加一个断点:
在这里插入图片描述
点击运行:
在这里插入图片描述

最终效果图:
在这里插入图片描述

最后

以上就是内向吐司为你收集整理的Vscode 调试arm64 linux内核的全部内容,希望文章能够帮你解决Vscode 调试arm64 linux内核所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部