当前位置: 首页 > news >正文

Linux中gdb使用

gdb是linux中的调试器,默认情况下,gcc和g++生成的是release版本,要使用gdb调试,需要加上-g选项

退出:ctrl+d或quit

debug:编译器形成可执行程序的时候会给程序添加调试程序。

可以看到,a.out确实比code.exe大,因为添加了调试信息。

常用选项:

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb

使用案例

以下是code.c代码:

 1 #include<stdio.h>2 int main()3 {4         printf("66666\n");5         printf("66666\n");6         printf("66666\n");7         printf("66666\n");8         printf("66666\n");9         printf("66666\n");10         printf("88888\n");11         printf("66666\n");12         printf("66666\n");13         printf("66666\n");14         printf("66666\n");15         printf("66666\n");16         printf("66666\n");17         return 0;18 19 }20 

进入gdb模式

查看文档

当然,也可以查看函数,显示上下文

运行

打断点

查看断点(info b)

删除断点

d num 

运行到断点处

禁用断点

启动断点

逐过程(或者n)不进入函数,直接执行;逐语句step(s),可进入函数内部

下面有一个123.c文件

  1 #include<stdio.h>2 int main()3 {       4         int i=0;5         while(i<10)6         {7                 printf("%d\n",i);8                 i++;9         }10         return 0;11 }

在此处打一个断点

查看变量

查看变量地址

自动显示变量(常显示)

如果不想显示就undisplay

查看函数调用

gdb使用大致如上,但是调试方法不止一种,能找到问题就是好方法。

http://www.dtcms.com/a/272763.html

相关文章:

  • Spring- @Autowired和@Resource 的区别
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_probes
  • linux系统---部署应用
  • day049-初识Ansible与常用模块
  • 如何远程访问在WSL运行的Jupyter Notebook
  • 如何安装python以及jupyter notebook
  • 创客匠人洞察:AI 时代创始人 IP 打造如何突破效率与价值的平衡
  • RabbitMQ 高级特性之消息分发
  • 【Fargo】发送一个rtp包的过程1:怎么统一加twcc序号
  • 华锐云空间展销编辑器:开启数字化展示新时代​
  • U-Boot 2025.07 引入的 “uthreads” 优势介绍
  • 什么是主链
  • 【会员专享数据】2013-2024年我国省市县三级逐月SO₂数值数据(Shp/Excel格式)
  • 使用EasyExcel动态合并单元格(模板方法)
  • RK3568项目(八)--linux驱动开发之基础外设(上)
  • 亚马逊运营中出单词反查
  • 机器学习:反向神经元传播公式推导
  • 记录今天学习Comfyui的感受
  • python正则表达式(小白五分钟从入门到精通)
  • 智能化时代下的门店运营:AI的深刻影响
  • 2025年第十五届APMCM亚太地区大学生数学建模竞赛(中文赛项)
  • 【C++】红黑树的底层思想 and 大厂面试常问
  • BootStrap
  • 售前:该站高位思考还是站低位思考
  • Codeforces Round 1034 (Div. 3) G题题解记录
  • 创建本地软件仓库(rhel7与rhel9)
  • HighReport报表工具开始支持BS报表设计器
  • SW-CA(多平台产品上架系统)
  • uni-app 途径站点组件开发与实现分享
  • 体积超过2MB?uniapp小程序分包上传