在低端微控制器上进行仿真时,直接使用JTAG和IDE集成开发环境进行在线调试,不仅操作简单,而且界面良好,运行情况和结果非常直观。但是在Linux平台,很少有类似的集成开发环境,Linux上的GDB使用命令操作的方式,而且它要比集成开发环境强大多。下面是整理的常用的GDB调试命令。
编译时必须添加-g才能利用GDB进行调试,如:gcc -g test.c -o test
- gdb -tui test打开调试程序,界面分页,上面是代码,下面是命令;
- gdbtui的开关快捷键:ctrl+x ctrl+a或者ctrl+x A
- file test在运行gdb下打开某个文件
- run/r 运行
- continue/c 继续运行
- step/s 如果有函数则进入函数执行
- finish 跳出当前的函数
- stop 停止运行
- until xxx 可用于跳出循环
- guit/ctrl+d 退出GDB
- print/p var 打印变量的值
- print/p &var 打印变量地址
- printf/p *addr 打印地址的值
- printf/p /x var 用16进制显示数据
x十六进制/d十进制/u十六进制无符号/t二进制/c字符/f浮点 - break/b xxx 在某行打断点
- break/b fun 在某个函数处加断点
- break/b 30 if n==100 //当变量n等于100的时候在30行处加断点
- break fileName:N 在某个文件的N行加断点
- info break/b 查看断点
- clear N 删除N行断点
- delete N 删除N号断点
- delete 删除所有断点
- disable xxx 失能断点
- enable xxx 使能断点
- info b 查看断点
- info source 查看当前程序
- info stack 查看堆栈信息
- info args 查看当前参数值
- display args 查看当前参数值
- bt 查看函数堆栈
- pwd查看程序路径
- ctrl+p 前一条命令
- ctrl+n 下一条命令
- watch xxx 设置监控点,在变量改变的时候停下来。(不可直接设置,先加断点在监测)
- ctrl+l可能layout会造成控制台花屏,使用ctrl+L清屏
- list linenum:以linenum指定的行号为中心,显示10行
- list function:以指定的函数为中心,显示10行
- list:重复上一次的list指令,也可以直接按回车键,重复上次指令。
- set listsize count:设置每次显示的行数。
- show listsize:显示已设置的显示行数。
- list first,last:显示指定起始行到结束结束行的源文件。
- list ,last:显示以指定的last为结束行,显示10行。
- list first,:以first为第一行,显示10行。
- list +:以上次显示的结束行为起始行显示后10行
- list –:以上次显示的起始行为结束行,显示前10行