使用GDB进行嵌入式应用程序调试的综合指南
1. GDB调试方式概述
GDB可通过两种方式调试应用程序:
- 若在桌面和服务器等同一机器上编译和运行代码,可直接本地运行GDB。
- 对于大多数嵌入式开发,通常使用交叉工具链,需在目标设备上运行代码,在交叉开发环境中控制调试,本文重点介绍此场景。
2. 远程调试关键组件 - gdbserver
远程调试的关键组件是调试代理gdbserver,它运行在目标设备上,控制被调试程序的执行,并通过网络连接或串行接口与主机上的GDB副本连接。
使用gdbserver调试与本地调试有诸多不同,调试时需注意以下几点:
|序号|注意事项|
|----|----|
|1|调试会话开始时,需用gdbserver在目标设备上加载要调试的程序,再在主机上从交叉工具链加载GDB。|
|2|GDB和gdbserver需先建立连接,调试会话才能开始。|
|3|主机上的GDB需知道在哪里查找调试符号和源代码,特别是共享库的相关信息。|
|4|GDB的run命令在远程调试中可能无法按预期工作。|
|5|调试会话结束时,gdbserver会终止,若要进行新的调试会话,需重新启动。|
|6|主机上调试二进制文件需要调试符号和源代码,但目标设备上通常不需要,因为目标设备存储空间有限,部署前需去除这些符号。|
|7|GDB/gdbserver组合并非支持本地运行GDB的所有功能,例如gdbserver无法跟踪fork后的子进程,而本地GDB可以。|
|8|若GDB和gdbserver版本不同,或版本相同但配置不同,可能会出现异常情况
超级会员免费看
订阅专栏 解锁全文
1648

被折叠的 条评论
为什么被折叠?



