首页 > 编程语言 >GDB调试程序 [补档-2023-07-19]

GDB调试程序 [补档-2023-07-19]

时间:2024-01-13 16:49:01浏览次数:30  
标签:设置 07 19 list num 调试程序 简写 断点 display

gdb调试

​ 它是gcc的调试工具,调试工具都能干什么就不多说了。

7-1生成调试信息

​ 在使用gcc编译c/c++的程序时,需要在编译命令中加入 -g 这一参数,它可以为你显示函数名,变量名 等待。例如:gcc -g test.c -o test

7-2启动gdb调试信息

启动指令:gdb 可执行程序名称

​ 设置运行参数:(在gdb中使用)

set args 可指定运行时参数。

show args 查看设置好的运行参数。

​ 启动程序:(在gdb中使用)

run 让程序开始执行,如果遇到断点,则停止中断点处。

start 让程序一步步向下执行。

7-3在调试中显示源代码

​ 如果在编译的命令上使用了 -g 选项,则可以在调试的过程中使用命令list或者l把源代码显示出来。并且可以中gdb中使用 特殊的指令来查看原代码中的内容。

​ 指令:

list 行数 打印第 x 行的上下文内容

list 函数名 显示对应函数名的原程序

list 显示当前行后面的源程序

list - 显示当前文件开始处的源程序

list file:num 显示file文件的第num行

list file:func 显示file文件中名为func函数的源代码

set listsize 行数 设置一次显示几行源代码(默认显示10行)

show listsize 查看当前listsize的设置

7-4断点设置

​ 设置普通断点:

break 设置断点,可简写为b

b num 在程序的第num行设置断点

b func 在名为func函数的入口处设置断点

​ 多文件直接设置断点:

b filename:num 在名为filename的源文件的第num行处打断点

b filename:func 在名为filename的源文件中的名为func函数的入口处打断点。

​ 查询所有断点:info binfo breaki breaki b,执行后会显示当前的所有断点及其序号。

​ 条件断点:(满足一定条件以后才会触发的断点)

b main.c:num if intValue == 5 在main.c源文件中的第八行设断点,如果行中的intValue的值等于 5时则暂停执行程序。

7-5断点的维护

​ 删除断点:delete可简写为d

delete num 删除断点序号为num的断点

delete 3 4 删除三号和四号断点

delete 1-n 删除从1到n的断点

delete 删除所有断点

​ 指定断点无效:disable可简写为dis

disable num 使得断点序号为num的断点失效。

disable 3 4 使得三号四号断点无效

disable 1-n 使得1到n个断点无效

disable 使得所有断点无效

​ 使无效的断点生效:enable可简写为ena

enable num 使得断点序号为num的断点恢复有效

enable 3 4 使得三号四号断点恢复有效

enable 1-n 使得1到n号断点恢复有效

enable 使得所有无效断点恢复有效

7-6gdb中调试代码的命令

run 运行程序,如果没有断点则会运行到底。可简写为r

next 单步跟踪,向下执行一条指令。可简写为n

step 单步跟踪,进入被调用的函数体内。可简写为s

finish 退出进入的函数,如果退出失败则函数中可能有断点导致退不出来

until 在一个循环体内单步跟踪时,如果不想跟踪了该命令可以直接运行到退出循环体。可简写为u

continue 继续运行程序,直到碰到下一个断点,没有断点则执行到底。可简写为c

7-7调试过程中查看变量的值

​ 打印运行时变量的值:

print XXX 打印值。其中的XXX可以为变量名,字符串,表达式的值,可简写为p

​ 自动显示变量的值:

​ 如果需要长期跟踪某个变量什么的可以采取这种方法,因为它可以在每一次单步跟踪时,打印一遍你 指定要展示的变量。

display 变量名 将某个变量设置为自动显示

info display 查看 display设置的自动显示的信息。

delete display num 删除编号为num的自动显示(编号通过info display查看)。

​ 当然,可以通过加空格的方式或者1-n的方式删除多个自动显示

disable display num 将编号为num的自动显示置为无效

​ 当然,可以通过加空格,1-n的方式来为多个目标设置无效

enable display num 恢复编号为num的自动显示

​ 当然,可以通过加空格,1-n的方式来为多个无效目标设置有效

其他操作:

ptype XX 这个命令用于查看XX变量的数据类型。

p XX 这个命令用于打印XX变量的值

set var xx 可以在调试过程中修改xx的值。如set var x = 10 将程序中x变量的值设置为10.

标签:设置,07,19,list,num,调试程序,简写,断点,display
From: https://www.cnblogs.com/xiaobai1523/p/17962532

相关文章

  • Linux文件IO之一 [补偿-2023-07-21]
    Linux文件IO8-1C标准库IO函数的工作流程​使用fopen函数打开一个文件,之后会返回一个FILE*fp指针,fp指针指向一个结构体,这个结构体是c标准io库中的一个结构体,这个结构体有三个重要的成员:文件描述符:描述符指向一个打开文件表,通过此表可以找到文件的inode表,通过对应的in......
  • MakeFile文件的使用 [补档-2023-07-13]
    makefile-gdb文件​可以在文件中指定那些文件可以先进行编译,那些文件可以后进行编译,那些文件可以重新编译。他可以自动化编译程序。。。。6-1makefile基本规则​如下:​目标:依赖​(tab)命令​规则三要素:目标:要生成的目标文件。依赖:目......
  • KY199 查找C
    C写个快排就行了。#include<stdio.h>#include<stdlib.h>#include<stdbool.h>intdivide(int*A,inthead,inttail){if(head==tail)returnhead;intx=A[head];while(head<tail){while(head<tail&&A[tail]&g......
  • Windows Server 2016 & 2019 工作站速配脚本
    之前有一篇关于把WindowsServer打造成工作站系统的随笔,其中的步骤完全基于手工操作,一部分对系统不熟悉的朋友恐怕会找不到设置的入口。与其弄一堆截图写所谓的教程,还不如写一个程序来自动化处理。init.ps1Write-Host"`n正在启用声音服务"Set-Service-Name"Audiosrv"-Stat......
  • Linux系统的一些实用操作 [补档-2023-07-30]
    Linux的实用操作4-1.常用快捷键强制停止:当某些程序运行时,或者命令输入错误时,可以通过ctrl+c来强制结束当前的操作。退出或登出:当我们要退出某些用户时,或者要退出某些特殊的页面可以使用ctrl+d来进行。(vi/vim不可用)历史命令搜索:通过输入history命令来查看之前输入......
  • Linux的用户和权限 [补档-2023-07-07]
    Linux用户和权限3-1.su用户切换命令exit用户退出命令​用户切换命令的语法:​su[-][用户名]​其中:​-可选,表示是否在切换用户后加载环境变量,建议带上。​用户名可选,表示要切换到那个用户,如果不填则默认切换到root用户上。​......
  • KY199 查找C++
      二分查找,没什么好说的。关键在于排成有序数组。然而C++调用sort就可以了。#include<iostream>#include<algorithm>#include<cstdlib>usingnamespacestd;booljudge(int*A,intn,intt){inthead=0;inttail=n-1;while(head<=tail){......
  • vi / vim编辑器的使用 [补档-2023-07-01]
    vi/vim编辑器​vi/vim编辑器是linux中的文本编辑器,其中vim比vi的功能更加强大,可以编辑shell程序,推荐使用vim,下面也将介绍vim如何使用。2-1vi/vim的三种工作模式命令模式​在此模式下,所敲的每一个键都是一个命令,不可以进行文本编辑。比如输入w代表保存等待。输入......
  • 07. HTTP接口请求重试怎么处理?
     目录1、前言2、实现方式2.1、循环重试2.2、递归重试2.3、SpringRetry2.4、Resilience4j2.5、http请求网络工具内置重试方式2.6、自定义重试工具2.7、并发框架异步重试2.8、消息队列3、小结1、前言HTTP接口请求重试是指在请求失败时,再次发起请求的机制。在实际应用中,由于网络波动......
  • 基于单片机的电子密码锁仿真设计(#0070)
    功能描述1、采用51单片机作为主控芯片;2、采用6个数码管显示输入密码,空闲时显示递增计秒;3、采用矩阵键盘输入密码、确认、取消;4、采用继电器控制电磁锁通断,LED指示状态;5、密码666666,不可改;6、连续3次输入错误LED报警指示;仿真设计采用Proteus作为仿真设计工具。Proteus是一款著......