2.1 启动调试
在程序开始调试之前,要确保程序在gcc、g++编译时,有如下-g的添加调试信息的选项
gcc -g test.c -o test
1、启动未运行的程序
启动未运行的程序,只需要在对应程序目录中使用下面的命令
gdb test
2、调试已经开始运行的程序进程
调试已经开始运行的程序进程,首先先用top命令查看运行的程序进程的pid如下:
比如我要加载的程序qemu-system-x86的pid为269427,则用下面的命令将进程附加到GDB调试
gdb attach 269427#gdb attach [进程号]
或者先打开gdb,在gdb中输入attach 269427也可以。效果如下
此时程序是处于暂停状态的,用下面的命令让程序继续运行
#前面是缩写,#后是全写,两者皆可
(gdb) c#continue
效果如下:
2.2 断点管理
添加断点
•方法一
#源程序只有一个文件
b [行号]#break [行号]
•方法二
#源程序多个个文件
b [文件名.c]:[行号]#break [文件名.c]:[行号]
添加断点后如下所示:
查看所有断点
info b#info break
效果如下:
我们可以看到所有的断点还有断点的编号
删除断点
delete#删除所有断点
delete [断点编号]#删除指定断点
2.3 中断调试执行
s#step 单步执行,进入函数调用
n#next 逐行执行当前线程的代码,不进入函数调用
c#continue 执行代码到下一个断点
f#finish 执行完当前函数并跳出
ignore [断点号] [次数]#设置或修改运行时断点的忽略计数
2.4 运行参数监控
p [变量名]#print [变量名] 输出该变量的值
display [变量名]#调试运行的每一步自动输出该变量的值
bt#显示当前的函数调用堆栈情况
list [行数]#显示当前执行的代码,默认10行
watch [变量名]#设置变量监视点,在变量值改变时暂停程序。
info breakpoints#显示当前已设置的断点列表。
info watchpoints#显示当前已设置的监视点(观察点)列表。
info functions#显示程序中定义的所有函数列表。
info variables#显示程序中定义的所有全局变量和静态变量列表。
info locals#显示当前函数的局部变量信息。
info args#显示当前函数的参数信息。
info threads#显示当前正在运行的所有线程信息。
info registers#显示当前线程的寄存器值。
info frame#显示当前的调用帧信息。
info sharedlibrary#显示加载的共享库信息。
info inferior#显示当前程序的执行状态信息。
info record#显示反复执行的命令数量。
info breakpoints location < address >#显示指定地址上设置的断点信息。
info break
2.5 多线程调试
info thread#命令查看当前线程的信息
info threads#命令查看当前所有线程
frame [栈帧号] #命令切换到指定的栈帧
thread [线程号]#切换到指定线程
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
程序
+关注
关注
116文章
3773浏览量
80830 -
调试工具
+关注
关注
1文章
46浏览量
12627 -
gdb
+关注
关注
0文章
60浏览量
13274
发布评论请先 登录
相关推荐
请问如何建立开发环境
如版主所写,Linux的开发环境建立(1)编译器arm-linux-gcc-3.4.1(2)Jflash-s3c2410:S3C2410芯片的JTAG工具(3)安装gdb调试工具在装载这些工具
发表于 05-20 05:45
VIM编辑器怎么实现对嵌入式软件的调试功能?
GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对嵌入式平台上的程序进行跟踪调试
发表于 08-30 07:18
VIM中怎么实现嵌入式软件调试?
GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对嵌入式平台上的程序进行跟踪调试
发表于 03-06 07:50
如何搭建嵌入式Linux的GDB调试环境
linux 领域我们最常用的就是GDB 调试工具,通过GDB 来调试嵌入式C 程序。本章我们首先学习如何搭建嵌入式Linux的GDB
发表于 11-05 06:03
基于Windows的ARM GCC开发环 境
本文以 N32G430 系列 MCU 为例,介绍了在 Windows 环境下基于 vscode 编辑器、GCC 编译工具链和 GDB 调试工具进行搭建开发环境,进行代码编译、固件下载和代码调试
发表于 11-02 06:27
N32G031系列GCC开发环境应用笔记分享
本文以 N32N031 系列 MCU 为例,介绍了在 Windows 环境下基于 vscode 编辑器、GCC 编译工具链和 GDB 调试工具进行搭建开发环境,进行代码编译、固件下载和代码调试
发表于 11-02 07:20
嵌入式Linux和嵌入式Linux开发环境
嵌入式Linux开发
图1是一个典型的嵌入式Linux开发环境它包括主机工作站或者PC 支持GDB的调试工具BDI2000 目标板和网络.除了硬件环境外还需要软件开发环境有两
发表于 09-10 10:22
•119次下载
如何在VIM中对嵌入式软件进行调试
GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对嵌入式平台上的程序进行跟踪调试
发表于 06-30 10:39
•1134次阅读
初学GDB调试工具需要注意的事项
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。相比于VS里面的图形化调试工具,其功能更加强大。
发表于 05-16 17:45
•1100次阅读
STM32CubeIDE乃ST官方提供的免费且功能强大的集成开发工具
STM32CubeIDE乃ST官方提供的免费且功能强大的集成开发工具,令STM32Cube生态系统更为丰富强劲。它基于Eclipse/CDT框架、GCC编译工具链和GDB调试工具,并支
Linux嵌入式 gdb VSCode图形化调试教程
linux 领域我们最常用的就是GDB 调试工具,通过GDB 来调试嵌入式C 程序。本章我们首先学习如何搭建嵌入式Linux的GDB
发表于 11-02 12:21
•15次下载
评论