第五章 GDB 调试器

1、GDB 调试器是什么

GDB 是一个用来调试 C 和C++程序的调试器(Debugger)

2、GDB 调试器有什么用

GDB 调试器使用者能在程序运行时观察程序的内部结构和内存的使用情况, GDB 是一种基于命令行工作模式下的程序, 工作在字符模式, 由多个不同的图形用户界面前端予以支持,每个前端都能以多种方式提供调试控制功能, 它的功能非常丰富,适用于修复程序代码中的问题。

• 启动程序,并且可以设置运行环境和参数来运行指定程序。
• 让程序在指定断点处停止执行。
• 对程序做出相应的调整,这样就能纠正一个错误后继续调试。

3、GDB 调试器怎么用

a、GDB 调试的是可执行文件,而不是源程序,如果想让 GDB 调试编译后生成的可执行文件,在使用 GDB 工具调试程序之前,必须使用带有-g 或-gdb 编译选项的 gcc 命令来编译源程序:linux@ubuntu:~$ gcc -g -o main main.c

b、gdb 命令的语法:linux@ubuntu:~$ gdb [参数] Filename

c、常用 GDB 命令

4、实例

程序a.c

输入半径求周长

#include "stdio.h"
#include "math.h"

int main(int argc, const char *argv[])
{
    float pi = 3.1415926;
    float r;
    float s;

    printf("please input your ridus: \n");
    scanf("%f",&r);

    s=pi*r*r;
    printf("the value is %f \n",s);
    return 0;
}

//在shell上运行的指令

sgz@ubuntu:~$ vi a.c

//调试之前先编译
sgz@ubuntu:~$ gcc -g -o a a.c

//进入调试的指令
sgz@ubuntu:~$ gdb -q a
Reading symbols from a...done.

//list指令
(gdb) list
1    #include "stdio.h"
2    #include "math.h"
3   
4    int main(int argc, const char *argv[])
5    {
6        float pi = 3.1415926;
7        float r;
8        float s;
9    
10        printf("please input your ridus: \n");

//运行指令
(gdb) run
Starting program: /home/sgz/a 
please input your ridus: 
5
the value is 78.539810 
//断点相关指令,但是现在还不怎么会用,以后碰到再说。
[Inferior 1 (process 32805) exited normally]
(gdb) break 5
Breakpoint 1 at 0x555555554729: file a.c, line 5.
(gdb) info break
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000555555554729 in main at a.c:5
(gdb) clear 5
Deleted breakpoint 1 
(gdb) break 8
Breakpoint 2 at 0x555555554745: file a.c, line 8.
(gdb) run
Starting program: /home/sgz/a 

Breakpoint 2, main (argc=1, argv=0x7fffffffe138) at a.c:10
10        printf("please input your ridus: \n");
(gdb) print pi
$1 = 3.1415925
(gdb) print s
$2 = 4.59163468e-41

//kill指令
(gdb) kill
Kill the program being debugged? (y or n) y

//退出指令

(gdb) quit
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值