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