linux入门笔记GDB调试

GDB调试器

对于Linux程序员来讲,GDB(GNU Debugger)通过与GCC的配合使用,为基于Linux的软件开发提供了一个完善的调试环境。
将调试符号插入到生成的二进制代码中的gcc编译
gcc -g hello.c -o hello

GDB使用流程
代码见后面 代码1

**首先使用GCC对test.c进行编译。**
> 注意:GDB进行调试的是可执行文件,而不是如“.c”的源代码,因此,需要先通过GCC编译生成可执行文件才能用GDB进行调试。编译时一定要加上选项“-g”,这样编译出的可执行代码中才包含调试信息,否则Gdb无法载入该可执行文件。
[root@vm-dev myprg]#gcc -g test.c -o test

**GDB使用流程—进入GDB调试环境**
[root@vm-dev myprg]# gdb test

**GDB使用流程**
-查看程序源文件    (gdb) list
-设置断点         (gdb) break 6
-查看断点设置情况  (gdb) info b
-运行程序         (gdb) run
-查看变量值
(gdb) print n
      $1 = 0
(gdb) print i
      $2 = 134518440
-单步运行  (gdb)next   (gdb)step
-恢复程序运行
(gdb) c
       Continuing.
       The sum of 1-50 is :1275
       Program exited normally.
-GDB的命令可以通过查看help进行查找
(gdb) help
(gdb) help data
(gdb) help call
-断点设置与恢复命令
函数断点
(gdb) break sum
条件断点
(gdb) break 8 if i= =10

GDB基本命令

GDB中的命令主要分为以下几类:
工作环境相关命令;
设置断点与恢复命令;
源代码查看命令;
查看运行数据相关命令及修改运行参数命令。
工作环境相关命令
命令格式 含义
set args 指定运行时参数,如set args 2;
show args 查看设置好的运行参数;
path dir 设定程序的运行路径;
show paths 查看程序的运行路径;
set en var[=value] 设置环境变量;
show en [var] 查看环境变量;
cd dir 进入到dir目录,相当于shell中的cd命令;
pwd 显示当前工作目录;
shell command 运行shell的command命令。
断点设置与恢复命令
命令格式 含义
info b 查看所设断点;
break 行号或函数名 设置断点;
tbreak 行号或函数名 设置临时断点,到达后被自动删除;
delete [断点号] 删除指定断点,其断点号为“info b”中的第一列。若缺省断点号则删除所有断点;
disable [断点号] 停止指定断点,使用“info b”仍能查看此断点。同delete一样,若缺省断点号则停止所有断点;
enable [断点号] 激活指定断点,即激活被disable停止的断点;
condition [断点号] 修改对应断点的条件;
ignore [断点号] 在程序执行中,忽略对应断点num次;
step 单步恢复程序运行,且进入函数调用;
next 单步恢复程序运行,但不进入函数调用;
finish 运行程序,直到当前函数完成返回;
c 继续执行函数,直到函数结束或遇到新的断点。

代码1

【GDBTest.c】
#include <stdio.h>
void sum(int m);
int main()
{
   int i,n=0;
   sum(50);
   for(i=1; i<=50; i++)
   {
      n += i;
   }
   printf("sum of 1-50 is %d \n", n );
   return 0;
}
void sum(int m)
{
   int i,n=0;
   for(i=1; i<=m;i++) n += i;
   printf("The sum of 1-%d is %d\n",m,n);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值