VS code 可视化调试Linux kernel内核
1、背景介绍
在Qemu模拟ARM64使用GDB调试linux kernel一文中,向大家介绍了使用Qemu模拟ARM64芯片,通过GDB来调试linux kernel,但是使用的是GDB命令模式,调试过程复杂,操作也不方便。本文向大家介绍通过VS code 来调试linux kernel内核,结合源代码实现可视化的单步调试。
2、参数配置
VS code 中调试C/C++,需要安装 C/C++ 插件支持;
在VS code 中打开linux kernel源代码工作区,在工作区添加调试的配置信息:运行->添加配置
在配置文件 launch.json 中添加配置:
"configurations": [
{
"name": "gdb调试",
"type": "cppdbg",
"targetArchitecture": "arm64",
"request": "launch",
"program": "${workspaceFolder}/vmlinux",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": "localhost:1234",
"setupCommands": [
{
//"text": "set arch aarch64",
"text": "set architecture aarch64",
"ignoreFailures": false
},
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
3、运行调试
3.1、运行模拟器
首先运行模拟器,qemu启动命令记得添加“-s -S”,详细请参考:Qemu模拟ARM64使用GDB调试linux kernel
3.2、VScode调试
linux kernel启动的C语言入口函数在 init/main.c 文件中的start_kernel函数,我们在此函数处添加断点信息,然后按“F5”启动调试:
如上图所示,调试启动后,暂停在start_kernel 断点处,左侧可以查看当前的状态,包括CPU的寄存器信息,可以实现单步运行,跟踪linux kernel运行过程。
3.3 自动启动模拟器
上述步骤中,我们是通过手动来启动模拟器,这里介绍通过vscode 的任务,通过调试指令触发启动模拟器。
首先配置任务:终端->配置任务
在配置任务的task.json文件中输入如下配置信息:
"tasks": [
{
//task的名称
"label": "run_qemu",
"type": "shell",
"isBackground": true,
//启动qemu脚本的地址
"command": "bash xxx/start_qemu.sh",
"args": [
]
}
]
启动调试时首先启动任务,在调试配置文件launch.json 文件新增配置:
"preLaunchTask": "run_qemu",
这样在F5启动调试时,首先启动"run_qemu"任务,由任务来启动qemu模拟器。
4、后记
通过一系列的文章,从VScode 的介绍,到使用VScode 调试Linux kernel代码,介绍了如何借助VS code来方便阅读理解linux源代码,俗话说:工欲善其事必先利其器,有了VS code这等利器,希望大家能够更好的理解linux源代码。
更多推荐
所有评论(0)