wordpress英文站更新通知目录,全国知名网,免费软件安装网站,网站功能模块清单一、背景
使用命令行连接gdb 在调试时#xff0c;虽然可以通过tui enable 显示源码#xff0c;但还是存在设置断点麻烦#xff08;需要对着源码设置#xff09;#xff0c;terminal显示代码不方便#xff0c;不利于我们学习#xff1b;另外在gdb 下p命令显示结构体内容…一、背景
使用命令行连接gdb 在调试时虽然可以通过tui enable 显示源码但还是存在设置断点麻烦需要对着源码设置terminal显示代码不方便不利于我们学习另外在gdb 下p命令显示结构体内容时看起来也是很别扭可以利用vscodegdb-multiarch 调试qemu 仿真的arm64 linux 内核这样查看源码设置断点查看变量信息也很快捷方便
二、依赖环境
vscode extensions 搜索安装GDB Debug 增加gdb config json 文件中增加主要是设置 elf, 以及gdb 的路径远程gdb连接的端口号
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid830387version: 0.2.0,configurations: [{type: cppdbg,request: launch,name: kernel GDB,program: ${workspaceFolder}/vmlinux,cwd:${workspaceFolder},MIMode:gdb,miDebuggerPath:/usr/bin/gdb-multiarch,miDebuggerServerAddress: localhost:1234,stopAtConnect: true,},]
} 三、在vscode中启动调试
如果不知道如何qemu 调试内核的可以参考我之前的文档
无人知晓qemu搭建arm64 linux kernel调试环境
无人知晓qemu单步调试arm64 linux kernel
这里有些差异gdb 加载vmlinux remote target设置的部分需要换成从vscode设置
第一步启动qemu并等待调试
qemu-system-aarch64 \-machine virt,virtualizationtrue,gic-version3 \-nographic \-m size1024M \-cpu cortex-a72 \-smp 2 \ -kernel Image \-drive formatraw,filerootfs.img \-append root/dev/vda rw nokaslr \-s \-S
第二步vscode启动调试 Run-Start Debugging 第三步启动调试在init/main.c中start_kernel设置断点然后点击调试工具栏的continue即可触发到断点可以开启单步调试了 第四步如果在执行过程中连接也是点击pause按钮这时内核会停止执行然后在vscode中设置断点continue后触发断点vscode能正确显示断点位置及代码