热门搜索 :
考研考公
您的当前位置:首页正文

再探gdb经常使用命令

2023-11-11 来源:东饰资讯网

??

前面已经有了一篇对gdb经常使用命令的总结。见 http://blog.csdn.net/u011848617/article/details/12838875 

这里对眼下学过的gdb命令进行了较完整的整理。

1、使用gdb调试代码,就要在编译时加入-g选项。

2、gdb -q —————— 启动gdb时不输出版权说明

3、gdb打开文件:  (1)gdb filename;  (2)先输入gdb,然后在gdb命令行输入file filename。

4、gdb选项(gdb中好多命令都有自己的简写字母):   不输入直接回车 ------------ 反复运行上一条命令   q(quit) ------------------- 退出gdb   file filename ------------- 打开文件filename   l(list) ------------------- 显示10行代码。若再次执行则显示接下来10行代码   list 5,10 ---------------- 显示第5到10行的代码   list test.c:5,10 -------- 显示源文件test.c中第5到10行的代码   list get_sum -------------- 显示get_sum函数周围的代码   list test.c:get_sum ------- 显示源文件test.c中get_sum函数周围的代码   shell XXX ----------------- 执行shell命令XXX   search/forward str -------- 从当前行向前查找第一个匹配的字符串str   reverse-search str -------- 从当前行向后查找第一个匹配的字符串str   r(run) -------------------- 执行程序   help XXX ------------------ 查看命令XXX的用法   help all ------------------ 查看全部命令的用法   whatis 变量或表达式 ------- 显示变量或表达式的数据类型   set variable 变量=值 ------ 给变量赋值   kill ---------------------- 结束当前程序的调试   continue ------------------ 让程序继续执行,直到下一个断点或者执行完为止   n(next) ------------------- 继续运行下一条语句,遇到函数把函数当作一条语句来运行   step ---------------------- 继续运行下一条代码,遇到函数会跟踪进入函数   nexti/stepi --------------- 单步运行一条机器指令   watch 变量名 -------------- 设置变量监測点   bt(backtrace) ------------- 显示程序当前执行位置和对当前位置的栈跟踪   display 变量或表达式 ------ 加入观察点。以后每次执行命令都会显示相应变量或表达式的值   undisplay num ------------- num为设置的display编号,能够用info display获取。不能用变量名

5、设置断点:   b(break) 行号 ----------------------- 在第n行设置断点   break fun_name ---------------------- 为函数fun_name设置断点   break 行号或函数名 if 条件 ---------- 程序在执行中。当条件满足时。在某行中断暂停执行   watch 条件表达式 -------------------- 程序执行中,满足条件时暂停执行,不须要写行号   info breakpoints -------------------- 查看当前全部的断点   disable 断点编号 -------------------- 使断点n失效   enable 断点编号 --------------------- 使断点n有效   clear ------------------------------- 删除本行断点(假设存在的话)   clear 行号 -------------------------- 删除此行断点   clear 函数名 ------------------------ 删除该函数的断点   delete 断点编号 --------------------- 删除指定编号的断点

6、print命令:   print XXX ------------------------------- 打印输出XXX的值   print 变量 = 值 ------------------------- 对变量赋值   print 表达式@要打印值的个数n ------------ 打印以表达式值開始的n个数

7、watch和display设置监測点的差别:   watch监測仅仅有当监測的变量值发生变化时才显示变量,并且旧值和新值都会显示。   display监測每一次执行命令都会显示变量的值,仅仅会显示变量的最新值。

再探gdb经常使用命令

标签:源文件   arch   命令   sdn   eve   输出   detail   str   bre   

小编还为您整理了以下内容,可能对您也有帮助:

GDB常用命令

1、file

载入调试程序,同时加载符号表

2、core-file

载入core mp程序映像,

gdb命令行参数形式: (-c | -core) core-file

3、symbol-file

从指定文件载入符号表

gdb命令行参数形式: (-s | -se | -symbols) symbol-file

4、directory

添加源文件搜索路径

gdb命令行参数形式: (-d | -directory) source-directory

5、r — run

启动调试程序,可传入参数

6、c — continue

跳过断点继续执行

7、s — step

单步执行,进入子程序内部

8、n — next

单步执行,越过子程序执行

9、b — break

设置断点,使用行号或函数名

10、i — info

显示断点 info breakpoints

11、d — delete

删除断点 delete breakpoints

12、bt — backtrace

打印栈帧

13、p — print

打印变量

/x 按十六进制格式显示变量

/d 按十进制格式显示变量

/u 按十六进制格式显示无符号整型

/o 按八进制格式显示变量

/t 按二进制格式显示变量

/a 按十六进制格式显示变量

/c 按字符格式显示变量

/f 按浮点数格式显示变量

14、l — list

显示程序源码

15、jump

跳转到第n行处开始调试

16、call

调用函数

17、finish

退出当前函数返回到它的调用函数

18、watch

设置观察点,当表达式的值改变时停止运行

19、awatch

设置观察点,当表达式的值被读取或发生改变时停止运行

20、commands

设置当遇到断点n时执行的特定动作命令

gdb调试命令是什么?

命令如下

1、对于在应用程序中加入参数进行调试的方法:

直接用 gdb app -p1 -p2 这样进行调试是不行的。

需要像以下这样使用:

#gdb app

(gdb) r -p1 -p2

或者在运行run命令前使用set args命令:

(gdb) set args p1 p2

可以用show args 命令来查看

2、加入断点:

break <linenumber>

break <funcName>

break +offset

break -offset

(在当前行号的前面或后面的offset行停住。)

break filename:linenum

在源文件filename的linenum行处停住。

break filename:function

在源文件filename的function函数的入口处停住。

gdb:UNIX及UNIX-like下的调试工具。如果在 UNIX平台下做软件,GDB调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。

2009年12月29日,程序调试工具 GDB 7.0.1 发布,新版本修正了7.0版本的一些严重的堆栈溢出bug,这些bug可能导致 GDB 调试进程中断,修正了在 FreeBSD 和 IRⅨ 系统下无法编译的问题,增加了对 Thumb2调试的支持,还有其他一些小bug的修复。

gdb调试命令是什么?

gdb调试命令如下:

1、启动gdb

$gdb 

这样可以和gdb进行交互了。 

2、启动gdb,并且分屏显示源代码 

$gdb -tui 

这样,使用了'-tui'选项,启动可以直接将屏幕分成两个部分,上面显示源代码,比用list方便多了。这时候使用上下方向键可以查看源代码,想要命令行使用上下键就用[Ctrl]n和[Ctrl]p。

3、启动gdb调试指定程序app

$gdb app 

这样就在启动gdb之后直接载入了app可执行程序,需要注意的是,载入的app程序必须在编译的时候有gdb调试选项,例如'gcc -g app app.c',注意,如果修改了程序的源代码,但是没有编译,那么在gdb中显示的会是改动后的源代码,但是运行的是改动前的程序,这样会导致跟踪错乱的。 

4、启动程序之后,再用gdb调试

$gdb <program> <PID> 

这里,<program>是程序的可执行文件名,<PID>是要调试程序的PID.如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。 

5、启动程序之后,再启动gdb调试

$gdb <PID> 

这里,程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID,<PID>是要调试程序的PID.这样gdb就附加到程序上了,但是现在还没法查看源代码,用file命令指明可执行文件就可以显示源代码了。

gdb怎么用

GDB调试,建议去下个系统的文档;

GDB调试器

GCC用于编译程序,而Linux的另一个GNU工具gdb则用于调试程序。gdb是一个用来调试C和C++程序的强力调试器,我们能通过它进行一系列调试工作,包括设置断点、观查变量、单步等。

其最常用的命令如下:

file:装入想要调试的可执行文件。

kill:终止正在调试的程序。

list:列表显示源代码。

next:执行一行源代码但不进入函数内部。

step:执行一行源代码而且进入函数内部。

run:执行当前被调试的程序

quit:终止gdb

watch:监视一个变量的值

break:在代码里设置断点,程序执行到这?锸惫移?

make:不退出gdb而重新产生可执行文件

shell:不离开gdb而执行shell

2)从你的描述上看来,你是用单独的gdb.exe调试器,调试的时候不需要运行程序的,编译的时候 只要加上相应的参数(”-g“)产生编译后的可执行文件,

以gcc编译sum.c(加-g选项产生debug信息):

gcc –g –o sum sum.c

在命令行上键入gdb sum并按回车键就可以开始调试sum了,再运行run命令执行sum。

Top