GDB的常用命令

GDB是一个用于调试C/C++程序的工具,需要生成带有调试符号的ELF文件。常用命令包括设置断点(break)、运行(next/step),查看变量(print/display)、调用堆栈(bt)以及继续执行(continue)。通过`layout`命令切换源代码和汇编视图,使用`file`加载调试文件,`clear`清除断点,`help`获取更多帮助。
摘要由CSDN通过智能技术生成

GDB是一个调试程序,可以用来调试C/C++程序。这个C/C++要产生符号表才能使用GDB调用。例如C++:

g++ -g source.cpp

GDB常用命令

首先要生成一个有调试符号的ELF文件(exe curable and linkable format),简单点说就是一个带调试符号可执行文件。加-g参数进行编译。

hello.cpp:
请添加图片描述

──(kali㉿kali)-[~/dev/Bear]
└─$ g++ -o world -g hello.cpp
──(kali㉿kali)-[~/dev/Bear]
└─$ ls
world hello.cpp

启动gdb调试程序

──(kali㉿kali)-[~/dev/Bear]
└─$ gdb

为了方便我们调试,在开始调前运行layout next

这个命令将显示程序中当前位置周围的源代码。这个视图对那些刚接触gdb的人很有帮助,特别是在处理您不熟悉的源代码时。
在启动GDB后,第一次输入

(gdb) layout next

请添加图片描述
请添加图片描述
再重复执行 layout next,将显示汇编语言的程序。
请添加图片描述
layout prev这个命令就是回到上一个模式。

使用world文件作为调试,使用file文件来读入调试用的文件world的符号

使用file将用作调试的文件的符号载入

(gdb) file world
Reading symbols from world...

设置断点

断点在特定的行数:

(gdb) break 2
(gdb) break 7

也可以断点在函数上:

(gdb) break main

请添加图片描述

运行world程序

(gdb) run world

或传些一参数给world程序:

(gdb) run world "ling ling"

请添加图片描述

使用next命令运行到下一行

(gdb) next

如果遇到一个函数调用,想进去看看,就可以用step

(gdb) step

请添加图片描述

如果已进入函数,然后不想继续看了,想回到它被调用的地方,就可以用finish

(gdb) finish

如果要回到调用点,可以使用return命令:

请添加图片描述

使用print检查一些变量的值

请添加图片描述

除了使用print检查一些变量的值,还可以使用display,与print的不同的是它会在每条指令之后重新打印信息。

在这里插入图片描述

使用clear清掉断点

如清掉第7行的断点

(gdb) clear 7

请添加图片描述
或者清点某个方法名上的断点:

(gdb) clear main

请添加图片描述

bt显示函数调用堆栈,即自到达这一行以来运行过的每个函数,即显示函数调用栈。

(gdb) bt

请添加图片描述

continue命令用于从断点停止的地方继续继续,直到下一个断点。

(gdb) continue

frame [number] goes to the selected frame in the call stack.

使用list命令,打印当前源文件中当前行周围的区域。显示当前行和调用的函数堆栈请添加图片描述

quit或者exit都是gdb调试程序。

上面这些命令是用得比较普遍的。更高级的使用可以通过help命令来找到更多有用的信息

(gdb) help

请添加图片描述
通过help命令就可以了解更多高级应用。在此就不再展开了。gdb学习起来还是很容易的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值