GDB(参考文档https://blog.csdn.net/linux7985/article/details/52399439)
backtrace //显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)
breakpoint //在程序中设置一个断点
cd //改变当前工作目录
clear //删除刚才停止处的断点
commands //命中断点时,列出将要执行的命令 (#add相当于vs的when hit)
continue //从断点开始继续执行
delete //删除一个断点或监测点;也可与其他命令一起使用
display //程序停止时显示变量和表达时
down //下移栈帧,使得另一个函数成为当前函数
frame //选择下一条continue命令的帧
info //显示与该程序有关的各种信息
jump //在源程序中的另一点开始运行
kill //异常终止在gdb 控制下运行的程序
list //列出相应于正在执行的程序的原文件内容
next //执行下一个源程序行,从而执行其整体中的一个函数
print //显示变量或表达式的值
pwd //显示当前工作目录
ptype //显示一个数据结构(如一个结构或C++类)的内容
quit //退出gdb
reverse-search //在源文件中反向搜索正规表达式
run //执行该程序
search //在源文件中搜索正规表达式
set variable //给变量赋值
signal //将一个信号发送到正在运行的进程
step //执行下一个源程序行,必要时进入下一个函数
undisplay //display命令的反命令,不要显示表达式
until //结束当前循环
up //上移栈帧,使另一函数成为当前函数
watch //在程序中设置一个监测点(即数据断点)
whatis //显示变量或函数类型
调试器(如GDB)的目的是允许你在程序运行时进入到某个程序内部去看看该程序在做什么,或者在该程序崩溃时它在做什么。
GDB主要可以做4大类事(加上一些其他的辅助工作),以帮助用户在程序运行过程中发现bug。
o 启动您的程序,并列出可能会影响它运行的一些信息
o 使您的程序在特定条件下停止下来
o 当程序停下来的时候,检查发生了什么
o 对程序做出相应的调整,这样您就能尝试纠正一个错误并继续发现其它错误
您能使用GDB调试用C、C++、Modula-2写的程序。等GNU Fortran编译器准备好过后,GDB将提供对Fortran的支持
GDB通过在命令行方式下输入gdb来执行。启动过后,GDB会从终端读取命令,直到您输入GDB命令quit使GDB退出。您能通过GDB命令help获取在线帮助。
您能以无参数无选项的形式运行GDB,不过通常的情况是以一到两个参数运行GDB,以待调试的可执行程序名为参数
gdb 程序名
您能用两个参数来运行GDB,可执行程序名与core文件(译注:不知道怎么翻译好,就不翻译了)。
gdb 程序名 core
您可以以进程ID作为第二个参数,以调式一个正在运行的进程
gdb 程序名 1234
将会把gdb附在进程1234之上(除非您正好有个文件叫1234,gdb总是先查找core文件)
file [filename]
装入想要调试的可执行文件
kill [filename]
终止正在调试的程序
break [file:]function
在(file文件的)function函数中设置一个断点
clear
删除一个断点,这个命令需要指定代码行或者函数名作为参数
run [arglist]
运行您的程序 (如果指定了arglist,则将arglist作为参数运行程序)
bt Backtrace: 显示程序堆栈信息
print expr
打印表达式的值
continue
继续运行您的程序 (在停止之后,比如在一个断点之后)
list
列出产生执行文件的源代码的一部分
next
单步执行 (在停止之后); 跳过函数调用
nexti
执行下一行的源代码中的一条汇编指令
set
设置变量的值。例如:set nval=54 将把54保存到nval变量中
step
单步执行 (在停止之后); 进入函数调用
stepi
继续执行程序下一行源代码中的汇编指令。如果是函数调用,这个命令将进入函数的内部,单步执行函数中的汇编代码
watch
使你能监视一个变量的值而不管它何时被改变
rwatch
指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令
awatch
指定一个变量,如果这个变量被读或者被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令
Ctrl-C
在当前位置停止执行正在执行的程序,断点在当前行
disable
禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数
display
在断点的停止的地方,显示指定的表达式的值。(显示变量)
undisplay
删除一个display设置的变量显示。这个命令需要将display list中的索引做参数
enable
允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数
finish
继续执行,直到当前函数返回
ignore
忽略某个断点制定的次数。例:ignore 4 23 忽略断点4的23次运行,在第24次的时候中断
info [name]
查看name信息
load
动态载入一个可执行文件到调试器
xbreak
在当前函数的退出的点上设置一个断点
whatis
显示变量的值和类型
ptype
显示变量的类型
return
强制从当前函数返回
txbreak
在当前函数的退出的点上设置一个临时的断点(只可使用一次)
make
使你能不退出 gdb 就可以重新产生可执行文件
shell
使你能不离开 gdb 就执行 UNIX shell 命令
help [name]
显示GDB命令的信息,或者显示如何使用GDB的总体信息
quit
退出gdb.
要得到所有使用GDB的资料,请参考Using GDB: A Guide to the GNU
Source-Level Debugger, by Richard M. Stallman and Roland
H. Pesch. 当用info查看的时候,也能看到相同的文章