本文发布于微信公众号:Linux底层小工,欢迎关注,获取更多原创技术文章!
“现在有了qemu+gdb调试OpenSBI的环境,也有了VSCode远程开发环境,这两者如果能结合起来,那将会极大提升开发、调试的效率,特别是debug的时候,可以实时跟踪代码会很爽的~”
01 VSCode安装C/C++插件
想要在VSCode中进行debug,那必须要安装插件,对于c代码来说,就安装微软开发的C/C++插件即可:
注意一定要点install in SSH: xxx,在虚拟机或远程机器上安装
02 配置VSCode Debugger
点击debug图标:
然后点击create a launch.json file:
选择Node.js:
然后输入如下内容:
{
// 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": "opensbi-debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/platform/generic/firmware/fw_jump.elf",
"args": [],
"stopAtEntry": true,
"stopAtConnect": true,
"cwd": "${workspaceFolder}",
"postRemoteConnectCommands": [
{
"description": "remove symbol file",
"text": "symbol-file"
}
{
"description": "add symbol file",
"text": "add-symbol-file ${workspaceFolder}/build/platform/generic/firmware/fw_jump.elf 0x80000000"
}
],
"MIMode": "gdb",
"miDebuggerPath":"/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": "localhost:1234"
}
]
}
注意,其中的program就是fw_jump.elf的路径,还有postRemoteConnectCommands要在连接之后先使用symbol-file命令将vscode启动gdb时默认加载的symbol清除掉,然后再使用add-symbol-file命令将symbol添加到0x80000000(为啥是0x80000000,请观看RISC-V篇-qemu+gdb调试OpenSBI源码),否则后面debug时会有问题,比如,设置断点,会命中多个地址等
03 在VSCode中调试OpenSBI
现在可以在VSCode中调试OpenSBI了,先在VSCode中打开终端,并启动qemu:
然后分别点击debug按钮,Start Debugging按钮:
启动debug之后,如下图:
现在可以直接在代码的左侧点击设置断点,或者在DEBUG CONSOLE下输入 -exec b xxx 设置断点,如下图,左侧红色的小点就是设置的断点:
点击countinue按钮运行:
就会命中断点,左侧还提供了非常丰富的信息:
好了,先写到这里,更多用法需要你自己去探索了~
如果你觉得本文对你有帮助,请点赞,关注一下哦~
本文发布于微信公众号:Linux底层小工,欢迎关注,获取更多远程技术文章!