GDB调试程序

  • 在PC端为gdb,在开发板上为gdbserver

  • 交叉编译器中自带gdb工具,存放在arm-linu-gnueabihf目录下,需要移植到开发板上

  • 在交叉编译时需要加上-g选项:

arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g

GDB调试程序

将编译好的文件放到开发板中,确保调试过程中PC端(Ubuntu)可以和开发板网络通信

  • 启动开发板上的gdbserver
gdbserver 192.168.1.253:2001 gdbtest

其中192.168.1.253为调试机的IP地址,即ubuntu的IP地址,2001是端口号(任意分配未使用端口)

开发板显示信息

  • 启动ubuntu中的gdb调试工具
arm-linux-gdb gdbtest

终端信息:
在这里插入图片描述

  • 连接开发板
target remote 192.168.1.251:2001

其中192.168.1.251为开发板的IP地址,2001是上面设置的端口号

开发板信息提示:
在这里插入图片描述

GDB命令

  1. 程序控制命令
run (r):启动被调试的程序。可以带参数启动,如run arg1 arg2。
continue (c):继续执行程序,直到遇到下一个断点或程序结束。
step (s):单步执行程序,如果当前行有函数调用,则进入该函数内部。
next (n):单步执行程序,但不会进入函数内部,即如果当前行有函数调用,会执行完该函数并停在下一行。
finish:执行当前函数中的剩余部分,直到函数返回。
kill:停止被调试的程序。
quit (q):退出GDB调试器。
  1. 断点管理命令
break (b):在指定位置设置断点。如break main在main函数的第一行设置断点,break file.c:10在file.c文件的第10行设置断点。
tbreak:设置临时断点,当程序第一次执行到该断点时自动删除。
info break (b):显示当前所有断点信息。
delete [Num]:删除编号为Num的断点,如果不指定Num,则删除所有断点。
enable/disable [Num]:启用/禁用编号为Num的断点。
  1. 查看信息命令
print (p):打印变量或表达式的值。如print x打印变量x的值。
info locals:显示当前函数的局部变量及其值。
info args:显示当前函数的参数及其值。
backtrace (bt):打印当前的函数调用栈信息。
where:显示当前执行的具体函数和代码行。
frame [n]:切换到第n个函数调用堆栈帧。
  1. 其他常用命令
watch:监视变量的值,当变量的值发生变化时停止执行。
ptype:打印类型的详细信息。
x:查看内存地址的内容,可以按不同格式(如十六进制、十进制等)显示。
set var:设置变量的值。如set var x = 10将变量x的值设置为10。
call:调用函数。可以在调试过程中调用程序中定义的函数。
list:显示源代码,可以指定行号或文件名来显示特定的代码段。
  1. 多线程和多进程调试
info threads:查看当前所有线程的信息。
thread [num]:切换到编号为num的线程进行调试。
attach [pid]:绑定到正在运行的进程进行调试。
info inferiors:显示当前所有被调试的进程信息。
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值