gdb学习(一)[第二版]

简介: 概述 gdb是GNU debugger的缩写,是编程调试工具。 功能 1、启动程序,可以按照用户自定义的要求随心所欲的运行程序。

概述

gdb是GNU debugger的缩写,是编程调试工具。

 

功能

1、启动程序,可以按照用户自定义的要求随心所欲的运行程序。

2、可让被调试的程序在用户所指定的断点处停住 (断点可以是条件表达式)。

3、当程序停住时,可以检查此时程序中所发生的事。

4、动态改变程序的执行环境。

 

 

示例:

gcc -Wall -g simple.c -o simple

#一定要记得加上-g选项,以便生成调试信息

 

启动gdb:gdb [-q] [executable-file] [core-file]

gdb simple

#启动gdb

 

list(l)

#查看程序的十行代码,连续键入list命令,可查看该文件所有代码

 

break(b) n

#在第n行设置断点

 

info break(i b)

#查看断点设置信息

 

break function-name (b function-name)

#在函数的入口处设置断点

 

run(r)

#启动程序,在断点处暂停

 

step(s)

#单步跟踪,一步步走

 

print i(p i)

#打印i当前值

 

until

#跳出循环

 

continue(c)

#继续运行,直到下一个断点,如果一直运行到程序结束,则会打印程序结束信息

 

enter键(回车)

#表示使用上一个命令

 

finish

#退出当前函数,打印函数的返回值

 

delete n

#删除断点n

 

quit(q)

#退出整个gdb调试程序

 

 

运行程序

1、run(r) #运行程序,直到一个断点或程序结束

2、run arg1 arg2 … #运行程序并加上参数,如:r a b c d ...

 

 

查看源码

list(l) - 查看最近10行源码

list fun-name - 查看fun函数源码

list file:fun-name – 查看file文件中的fun函数源码

如:l search.c:seq_search #如果只有一个文件包含有seq_search函数,则不必加”search.c:”

 

list [m,n]

list 2,10 – 查看从第2行到第10行源代码

list ,15 – 查看最多到第15行的源代码

 

设置断点与观察点

break [line-num]

break [fun-name]

break [file-name:line-num]   #b search.c:4

break [file-name:fun-name]

break if <condition> - 条件成立时程序停住

E.g. break if i = 10

 

info break(i b) – 查看断点

watch expr – 一旦expr值发生改变,程序就停住。【设置观察点】

E.g. watch i   #一旦i值发生改变,则程序暂停

 

delete n(d n) – 删除断点n # d 1 d 1 2 3

 

单步调试

continue(c) 

- 运行至下一个断点

 

step(s) 

- 单步跟踪,进入函数内部,类似于Vs中的step in[但是不会进入没有提供源代码的函数]

 

next(n) 

- 单步跟踪,不进入函数内部,类似于VC中的step out

 

finish 

- 运行程序,直到当前函数完成返回。并打印函数返回时的堆栈地址和返回值及参数值等信息。但是不会跳出main函数。

 

until 

– 运行程序直到退出循环体。如果一次没有跳出,则执行下一次

 

return [value]

- 停止当前函数,提前让函数返回[动态调整程序的执行],将value返回调用者,相当于step return

 

set variable var-name = value

- 改变一个变量的值


gdb常用命令总结

命令

作用

run(r)

运行,启动程序

list(l)

列出10行源程序

break(b)

设置断点

info break(i b)

打印断点详细信息

continue(c)

继续运行程序,直到下一个断点

watch

设置观察点

step(s)

单步跟踪,类似于VC中的step in

next(n)

单步跟踪,类似于VC中的step out

finish

运行程序,直到当前函数返回,返回函数

until(u)

跳出循环(有时需要两次)

print(p)

查看运行时变量及表达式

help

打印帮助信息

 

附-

 

#Makefile

CC = gcc 

CFLAGS = -Wall -g

 

BIN = sample main 

 

.PHONY: all clean

 

all: $(BIN)

 

%.o: %.c 

    $(CC) $(CFLAGS) -o $@ -c $<

 

sample: sample.o

 

main: main.o search.o

    $(CC) $(CFLAGS) -o $@ $^

 

clean:

    -rm -rf $(BIN) *.o

 

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
NoSQL Linux 文件存储
GDB学习入门之gdb准备2
GDB学习入门之gdb准备2
126 0
GDB学习入门之gdb准备2
|
NoSQL Shell Linux
GDB学习入门之gdb准备
GDB学习入门之gdb准备
114 0
|
NoSQL 小程序 C语言
GDB调试学习(四):段错误
GDB调试学习(四):段错误
397 0
|
NoSQL
GDB调试学习(三):观察点
GDB调试学习(三):观察点
132 0
|
NoSQL
GDB调试学习(二):断点
GDB调试学习(二):断点
158 0
|
3月前
|
存储 NoSQL C语言
GDB学习整理
GDB(GNU Debugger)是一款功能强大的调试工具,用于调试C、C++等程序。它允许开发者启动程序、设置断点、单步执行、查看和修改变量值、检查调用栈(stack frame)等。用户可通过命令行操作GDB,常用命令包括:`run` 启动程序、`break` 设置断点、`next` 单步执行、`continue` 继续执行、`print` 打印变量值、`quit` 退出GDB。GDB还支持初始化文件(如`.gdbinit`),可在启动时自动加载配置或脚本。通过断点条件、监视点、回溯(backtrace)等功能,开发者能高效排查程序错误。
160 0
|
NoSQL IDE Linux
Linux的学习之路:8、Linux调试器-gdb使用
Linux的学习之路:8、Linux调试器-gdb使用
130 0
|
NoSQL Shell C语言
GDB调试学习(一):单步执行和跟踪函数调用
GDB调试学习(一):单步执行和跟踪函数调用
314 1
|
NoSQL 编译器 Linux
GDB 学习入门之GDB初识
GDB 学习入门之GDB初识
166 0
|
NoSQL Linux Android开发
OPENJTAG调试学习(三):使用 gdb 命令行进行调试
OPENJTAG调试学习(三):使用 gdb 命令行进行调试
246 0