1. 添加gdbserver软件包

~/yocto$ source poky/oe-init-build-env qemux86-64-build/
~/yocto/qemux86-64-build$ devtool edit-recipe myimage
require recipes-core/images/core-image-minimal.bb
IMAGE_INSTALL += "sqlite3 gdb gdbserver"
~/yocto/qemux86-64-build$ bitbake myimage
~/yocto/qemux86-64-build$ bitbake myimage -c populate_sdk
~/yocto/qemux86-64-build$ runqemu qemux86-64
~/yocto/qemux86-64-build$ ifconfig 

2. 编写测试程序

/* app/gdb_test.c */
#include <stdio.h>
#include <unistd.h>

int main(void)
{
	int i = 0;
	while (1)
	{
		i++;
		printf("%d\r\n", i);
		sleep(1);
	}
	return 0;
}

app$ x86_64-poky-linux-gcc --sysroot=/opt/poky/3.4.2/sysroots/core2-64-poky-linux gdb_test.c -o gdb_test -g
app$ cp gdb_test ~/nfs_rootfs/mnt/

3. vscode设置

安装Remote Developmen插件,C/C++插件,点击运行和调试->创建launch.json文件。
1

/* 配置launch.json */
{
        "version": "0.2.0",
        "configurations": [
                {
                        "name": "gdb_test",
                        "type": "cppdbg",
                        "request": "launch",
                        "program": "${workspaceFolder}/gdb_test",
                        "args": [],
                        "stopAtEntry": false,
                        "cwd": "${workspaceFolder}",
                        "environment": [],
                        "externalConsole": false,
                        "MIMode": "gdb",
                        "setupCommands": [
                            {
                                "description": "Enable pretty-printing for gdb",
                                "text": "-enable-pretty-printing",
                                "ignoreFailures": true
                            }
                        ],
                        "miDebuggerPath": "/opt/poky/3.4.2/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/x86_64-poky-linux-gdb",
                        "miDebuggerServerAddress": "xxx.xxx.xxx.xxx:2021"
                    }
            
        ]
}
name: 调试的文件名,例如"gdb_test"
program: 需要调试的应用程序可执行文件路径
cwd: 需要调试的应用程序源码路径
miDebuggerPath: 交叉编译器gdb路径
miDebuggerServerAddress: 开发板ip:port

4. 开始调试

~/yocto/qemux86-64-build$ runqemu qemux86-64 
root@qemux86-64$ mount -t nfs -o nolock,vers=3 ###.###.###.###:/home/ubuntu18/nfs_rootfs/mnt /mnt
root@qemux86-64:/mnt$ gdbserver xxx.xxx.xxx.xxx:2021 gdb_test

xxx.xxx.xxx.xxx为服务器IP。对口与launch.json的端口对应。然后打开vsode ,按F5快捷键开始调试。

3
qemux86-64调试结果:
4

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐