概述
对于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内核所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复