【转】 linux编程之GDB调试

GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能:

1 在程序中设置断点,当程序运行到断点处暂停

2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来

3 单步执行

4 运行时修改变量的值

5 跟踪路径

6 线程切换

等等

下面以以下程序为例

当我们要使用GDB进行程序的调试时,在用GCC编译时需要加上-g,如下:

GDB之所以能够进行程序的调试也是在于进行编译时的-g选项,当设置了这个选项的时候,GCC会向程序中塞入一下信息,作为GDB调试时的铺垫

,然后GDB才能够利用这些铺垫和信息与程序交互。

有两种方式可以进入GDB,一种就是直接在命令行上输入gdb,然后再在gdb中用file命令加载要调试的程序:

另一种就是,直接在命令行上使用:gdb 程序名

这两种方法都是要在GDB中加载已经做了铺垫的将被调试的程序。

进行GDB并且加载了程序后,我们就可以进行一系列的调试操作了:

1 用 "set args 参数值1  参数值2...."来设置输入参数

2用“list 开始的行号"来打印内容

list 还可以选取区间来打印代码:

3.用 ”b 位置"设置断点

4.用 “run 参数”来运行程序

5.用"display 变量名“来显示变量

6.用”c"来继续运行程序

7.用set命令来改变变量的值

8用q命令来退出GDB

9 用p命令来打印变量的值

10 设置条件断点

11 用delete删除断点

12 用info break 来显示断点信息

13.用bt来显示函数调用路径

14用whatis或者ptype来显示变量的类型

时间: 2024-10-12 03:49:10

【转】 linux编程之GDB调试的相关文章

Linux编程之ICMP洪水攻击

我的上一篇文章<Linux编程之PING的实现>里使用ICMP协议实现了PING的程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩的用途?这里我将介绍ICMP另一个很有名的黑科技:ICMP洪水攻击. ICMP洪水攻击属于大名鼎鼎的DOS(Denial of Service)攻击的一种,一种是黑客们喜欢的攻击手段,这里本着加深自己对ICMP的理解的目的,也试着基于ICMP写一段ICMP的洪水攻击小程序. 洪水攻击(FLOOD ATTACK)指的是利用计算机网络技术向目的主机发

linux应用开发-gdb调试

linux应用开发-gdb调试 一 gdb概念 gdb是GNU开发的linux下的调试工具 二 基本使用过程 1 进入调试程序的模式: gcc -g test.c -o test.out 2 开启gdb:            gdb test.out 3 运行程序:           run(r) 4 退出:               quit(q) 5 也可以先进入gdb在执行file装载要调试的文件 三 基本命令 1 设置断点:break(b) 行号 或 break(b)文件名:行号

linux学习之四---gdb调试

在Linux应用程序开发中,最常用的调试器是gdb. 一.启动和退出gdb gdb调试的对象是可执行文件,而不是程序的源代码.如果要使一个可执行文件可以被gdb调试,那么使用编译器gcc编译时需要加入-g选项,-g选项告诉gcc在编译时加入调试信息,这样gdb才可以调试这个被编译的程序. 1.编译test.c源程序 gcc -g test.c -o test ./test test.c中的源码为: #include<stdio.h> int get_sum(int n) { int sum=0

Linux下使用GDB调试应用程序示例

GDB概述 ---- GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓"寸有所长,尺有所短"就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式)

linux应用程序设计--GDB调试

GDB简介:GDB是GNU发布的一款功能强大的程序调试工具,GDB主要完成下面三个方面功能: 一.GDB的使用操作 1.启动被调试程序. 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). GDB调试实例: 1.在linux下编写test.c程序: 1 #include <stdio.h> 2 3 int main() 4 { 5 int i; 6 long result = 0; 7 for(i=0;i<100;i++) 8 { 9 result

linux基础2——gdb调试器

gdb调试器使用的一般步骤(不断更新完善): 1.编译过程中要用-g参数来添加调试符号——gcc test.c -g: 2.gdb启动可执行文件——gdb a.out: 3.出现gdb符号表示启动成功: 4." l " (小写l)命令可以查看当前代码是否是要执行的代码: 5.断点 b 行号/函数名字——作用是程序执行过程中会自动在断点处暂停,等待指令 info b—— 查看断点列表 d 编号——删除指定编号的断点 6.执行程序 r 回车——程序启动,执行到代码中第一个出现断点处暂停 7

Linux系统下GDB调试

GDB 一.gdb常用命令: 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或i) locals 查看当前栈帧局部变量的值 list(或l) 列出源代码,接着上次的位置往下列,每次列10行 list 行号 列出从第几行开始的源代码 list 函数名 列出某个函数的源代码 next(或n) 执行下一行语句 print(或p) 打印表达式的值,通过表达式可以修改变量的值或

Linux中的gdb调试

一.整体大纲 二.gdb调试 1. 启动gdb start -- 只执行一步    n -- next    s -- step(单步) -- 可以进入到函数体内部    c - continue -- 直接停在断点的位置 2. 查看代码: l -- list    l 10(函数名)    l filename:行号(函数名) 3. 设置断点: 设置当前文件断点:    b -- break    b 10(函数名)    b fileName:行号(函数名)    设置指定文件断点:    

Linux基础(03)gdb调试

1. 安装GDB增强工具 (gef) * GDB的版本大于7.7 * wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh | sh * 确保网络连通 并且成功更新ubuntu (更新source.list 使用apt-get update) 2. GDB安装插件(在root权限安装,用户权限使用不了需要在用户权限下安装) git clone https://github.com/gatieme/GdbPlugins