0
点赞
收藏
分享

微信扫一扫

GDB的常用命令


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

g++ -g source.cpp

GDB常用命令

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

hello.cpp:

GDB的常用命令_linux

──(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

GDB的常用命令_g++_02


GDB的常用命令_c++_03


再重复执行​​ layout next​​,将显示汇编语言的程序。

GDB的常用命令_开发语言_04


​layout prev​​这个命令就是回到上一个模式。

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

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

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

设置断点

断点在特定的行数:

(gdb) break 2
(gdb) break 7

也可以断点在函数上:

(gdb) break main

GDB的常用命令_GDB_05

运行world程序

(gdb) run world

或传些一参数给world程序:

(gdb) run world "ling ling"

GDB的常用命令_GDB_06

使用next命令运行到下一行

(gdb) next

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

(gdb) step

GDB的常用命令_GDB_07

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

(gdb) finish

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

GDB的常用命令_linux_08

使用print检查一些变量的值

GDB的常用命令_linux_09

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

GDB的常用命令_开发语言_10

使用clear清掉断点

如清掉第7行的断点

(gdb) clear 7

GDB的常用命令_GDB_11


或者清点某个方法名上的断点:

(gdb) clear main

GDB的常用命令_linux_12

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

(gdb) bt

GDB的常用命令_GDB_13

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

(gdb) continue

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

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

GDB的常用命令_开发语言_14

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

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

(gdb) help

GDB的常用命令_开发语言_15


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


举报

相关推荐

0 条评论