使用Linux命令行和开发板GDB在线联调

使用Linux命令行和开发板GDB在线联调

嵌入式GDB远程调试:
所需工具:
1)交叉编译工具链的的arm-linux-gnueagihf-gdb
2)以及在板子上面跑的gdbserver(也是在交叉编译工具链中,和arm-linux-gnueagihf-gdb同目录),需要将其推送到开发板上的/bin目录下

具体流程

1、使用交叉编译工具arm-linux-gnueagihf-gcc -g -o test test.c编译源码(test.c),带有调试信息(-g),然后将可执行文件(test)推送一份到板子上
2、板子使用gdbserver运行程序:gdbserver app pc_ip:board_port 例如:gdbserver test 192.168.31.83:2000(端口随意)
3、PC运行 arm-linux-gnueagihf-gdb test,进入gdb运行界面
1) 然后输入target remote board_ip:board_port 例如:target remote 192.168.31.211:2000
2) 然后调试即可 常用命令:l b s n c p q

VSCODE的gdb调试环境:

1、安装插件:remote development
2、在运行调试里面添加配置。(会自动弹出.launch.json文件)

json配置如下:

{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “gdb调试”,
“type”: “cppdbg”,
“request”: “launch”,
“program”: “KaTeX parse error: Expected 'EOF', got '#' at position 28: …lder}/test", #̲ 调试的应用程序 …{workspaceFolder}”,
“environment”: [],
“externalConsole”: false,
“MIMode”: “gdb”,
“setupCommands”: [
{
“description”: “为 gdb 启用整齐打印”,
“text”: “-enable-pretty-printing”,
“ignoreFailures”: true
},
{
“description”: “将反汇编风格设置为 Intel”,
“text”: “-gdb-set disassembly-flavor intel”,
“ignoreFailures”: true
}
],
“miDebuggerPath”: “/home/ubuntu/rv1126_sdk/rv1126_0310/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb”, # gdb所在绝对路径
“miDebuggerServerAddress”: “192.168.31.211:2000” # 板子上的IP以及开放端口
}
]
}

### RK3566 平台上使用 GDB 加载 vmlinux 文件进行内核调试 为了在 RK3566 平台上使用 GDB 进行内核调试,通常需要准备特定的工具链配置环境。以下是具体的操作方法: #### 准备工作 确保已经编译好适用于 RK3566 的 Linux 内核,并且拥有对应的 `vmlinux` 文件以及符号表文件 `.symtypes` `.debug`。 #### 设置目标机与主机连接 通过串口或网络等方式建立开发板(即运行 RK3566 的设备)同宿主机之间的通信通道。对于基于 ARM 架构的目标系统来说,推荐采用 JTAG/SWD 接口配合硬件仿真器来实现稳定可靠的联调方案[^1]。 #### 配置并启动 QEMU 模拟器 (可选) 如果实际物理设备不可用,则可以考虑利用 QEMU 来模拟 RK3566 环境,在本地环境中完成大部分测试工作。需要注意的是,QEMU 对于某些特殊功能可能无法完全支持,因此最终验证还是要回到真实硬件上执行。 #### 使用交叉编译版 GDB 工具 安装适合 ARM Cortex-A 架构处理器使用的 GNU Debugger 版本,比如 arm-linux-gnueabihf-gdb 或 aarch64-none-elf-gdb 等。这些版本能够理解 ARM 指令集架构并且兼容多种嵌入式操作系统特性。 #### 开始调试会话 假设现在已经在宿主机端准备好了一切必要条件,那么就可以按照如下命令序列发起一次完整的远程调试过程: ```bash arm-linux-gnueabihf-gdb ./path/to/vmlinux (gdb) target remote /dev/ttyUSB0 # 如果是通过 USB-TTL 电缆连接到串口的话 # 或者如果是网卡连接则可能是这样的形式: # (gdb) target remote tcp://localhost:1234 (gdb) set architecture arm # 显式指定体系结构为ARM (gdb) monitor reset # 发送复位指令给目标机器 (gdb) continue # 让被测程序继续执行直到遇到断点为止 ``` 当成功附加至正在运行中的 kernel 后,便可以根据实际情况设置各种类型的中断点、观察变量变化情况或是逐步跟踪函数调用流程了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值