您的位置:首页 > 运维架构 > Linux

linux入门笔记GDB调试

2017-10-22 16:58 211 查看

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux gdb