首页 > 系统相关 >Linux下使用GDB调试代码

Linux下使用GDB调试代码

时间:2023-08-12 15:12:25浏览次数:34  
标签:代码 gdb GDB Linux 断点 调试

目录

Linux下使用GDB调试代码

GDB

GDB是 GNU开源组织发布的一个强大的Unix/Linux下的程序调试工具。

作用:
1、启动用户程序后,可以按照用户的要求随意运行程序
2、可让被调试的程序在用户所设定的断点处停住
3、当程序被停住时,可以检查此时用户程序中所发生的事。
4、可动态改变用户程序的执行环境

例程

启动

gcc-g hello.c -o hello //得到默认release版本文件

gdb ./hello //进入调试状态

image

但通常是生成debug版本的文件

gcc -o mytest test.c -std=c99

readelf -S mytest//查看调试信息
readelf -S mytest | grep -i debug //更加详细的调试信息

查看

| 0 //查看代码
(gbd)list 5 //显示以第5行为中心的10行代码

image

(gdb) list main//显示函数名为main的函数的源代码

image

(gdb)list - : 显示当前行前面的代码

断点

(gdb) b main :为函数打断点,在进入函数的时候停止。

b 数字(行数) //打断点

infor b//找断点

d 编号 //删断点

disable breakpoint 编号 //设置空断点

enable breakpoint 编号//开启断点

n(next)//逐过程

s//逐语句

运行

(gdb)r [run的缩写] :开始运行程序,程序运行到断点的位置会停下来,如果没有遇到断点,程序会一直运行下去。

退出

(gdb) quit : 退出gdb调试

标签:代码,gdb,GDB,Linux,断点,调试
From: https://www.cnblogs.com/z-qhhh/p/17624785.html

相关文章

  • 优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具
    主要功能支持多种Modbus协议,包括:ModbusRTUModbusASCIIModbusTCP/IPModbusUDP/IPModbusRTUOverTCP/IPModbusRTUOverUDP/IP监视串行线路或以太网上的通信数据支持多达28种数据格式,包括:Signed、Unsigned、Hex、Binary、Long、Float、Double等支持Modbus协议地址和PLC......
  • C# WINFORM窗体右上角X点击后无法退出调试
    这个是由于你的程序在运行过程中开启了新线程,而在结束时没有把线程退出privatevoidBtnUpdate_Click(objectsender,EventArgse){intiX=this.Left;intiY=this.Top;Threadthr="更新".FindAndMoveMsgBox(iX,iY,true);if(dgv.......
  • 优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具
    目录优秀的Modbus从站(从机、服务端)仿真器、串口调试工具主要功能软件截图优秀的Modbus从站(从机、服务端)仿真器、串口调试工具官网下载地址:http://www.redisant.cn/mse主要功能支持多种Modbus协议,包括:ModbusRTUModbusASCIIModbusTCP/IPModbusUDP/IPModbusRTUO......
  • Linux visudo权限管理
    root用户给普通用户授权visudo(推荐使用,因为他会检查语法)vim/etc/suoders(不检查语法)普通用户切换root用户的两种方法1)su-root(需要root密码)2)sudosu-root(不需要root密码但是需要在visudo或/etcsuoders里面配置guoguo ALL =(ALL) ALL 用户    主机 切换的角色 ......
  • Linux ROOT密码忘记解决方法 root口令忘记解决方法
    忘记root密码解决思路:用光盘启动重新设置密码将光盘设置为第一启动保存退出进入救援模式  用光盘启动 设置root密码主板上有个bios芯片,不但可以自检程序用于引导之外,还可以设置(一般电脑的话开机按F2、F1或者其他键)虚拟机上就是打开电源时进入固件然后开机 找到Boot(启动)里面......
  • Linux磁盘故障,模拟故障及解决思路方法
    每个分区起始位置都有一个inod表索引节点表(类似于目录表)每一个文件都对应一个编号称为索引节点,如果这个空间文件数太多了,记满了,就说明索引节点表耗尽。故障1 该分区不能正常读写或者说只能读不能写了但是又没有满,就代表文件系统有问题,文件系统有问题需要进行修复命令:故障2:索引......
  • 解决linux mysql命令 bash mysql command not found 的方法
    错误:root@DB-02~]#mysql-uroot-bash:mysql:commandnotfound原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。首先得知道mysql命令或mysqladmin命令的完整路......
  • linux系统安装bison,解决 These critical programs are missing or too old bison comp
    1、编译 glibc过程中报错../configure--prefix=/opt/glibc-2.272、首先查看bison版本  bison--versionbison-V貌似就没有安装bison。3、使用yum安装bison yuminstallbison 安装成功。 4、查看版本:bison--version 居然这么简单就完成了。5、继续编译 glibc......
  • 在消费级GPU调试LLM的三种方法:梯度检查点,LoRA和量化
    前言 LLM的问题就是权重参数太大,无法在我们本地消费级GPU上进行调试,所以我们将介绍3种在训练过程中减少内存消耗,节省大量时间的方法:梯度检查点,LoRA和量化。本文转载自DeepHubIMBA仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技......
  • 什么是Shell,初识Shell脚本Shell编程,shell介绍,Linux
    脚本脚本就是批处理平常一个命令不能完成的任务,写到一个文件当中,有多个命令按照一定的逻辑来进行编写编写完后去执行这个文件,随后他就会按照流程多个命令,多个语句,达到批处理的一个任务shell 系统分成了三层第一层是kernel(内核)内核是操作系统的核心,主要负责1管理硬件,电脑cpu是什么......