cc -g tst.c -o tst <---------- 编译生成可执行文件
gdb tst <---------- 启动GDB
(gdb) l <-------------------- l命令相当于list,从第一行开始例出原码
(gdb) l <-------------------- l命令相当于list,从第一行开始例出原码。
(gdb) break 16 <-------------------- 设置断点,在源程序第16行处。
(gdb) info break <-------------------- 查看断点信息。
(gdb) r <--------------------- 运行程序,run命令简写
(gdb) n <--------------------- 单条语句执行,next命令简写。
(gdb) c <--------------------- 继续运行程序,continue命令简写。
(gdb) p i <--------------------- 打印变量i的值,print命令简写。
(gdb) bt <--------------------- 查看函数堆栈。
(gdb) finish <--------------------- 退出函数。
(gdb) q <--------------------- 退出gdb。
-
delete :清除断点或自动显示的表达式。使用格式: delete 断点号
-
disable :让指定断点失效。使用格式: disable 断点号 (断点号之间用空格间隔开)
-
enable :和disable相反,恢复失效的断点。使用格式:enable 断点编号列表
-
ignore :忽略断点。使用格式: ignore 断点号 忽略次数
-
condition :设置断点在一定条件下才能生效。使用格式:condition 断点号 条件表达式
-
cont/continue :使程序在暂停在断点之后继续运行。使用格式:
cont 跳过当前断点继续运行。
cont n 跳过n次断点,继续运行。
当n为1时,cont 1即为cont。 -
jump :让程序跳到指定行开始调试。使用格式:jump 行号
-
next :继续执行语句,但是跳过子程序的调用。使用格式:next 执行一条语句, next n 执行 n条语句
-
nexti :单步执行语句,但和next不同的是,它会跟踪到子程序的内部,但不打印出子程序内部的语句。使用格式同上。
-
step :与next类似,但是它会跟踪到子程序的内部,而且会显示子程序内部的执行情况。使用格式同上。
-
stepi :与step类似,但是比step更详细,是nexti和step的结合。使用格式同上。
-
print :打印变量或表达式的值。使用格式:print 变量或表达式
表达式中有两个符号有特殊含义:$和$$。
表示给定序号的前一个序号,表示给定序号的前两个序号。如果 和 和 和$后面不带数字,则给定序号为当前序号。 -
backtrace :打印指定个数的栈帧(stack frame)。使用格式:backtrace 栈帧个数
-
frame :打印栈帧。使用格式:frame 栈帧号
-
info frame :显示当前栈帧的详细信息。
-
select-frame :选择栈帧,选择后可以用info frame来显示栈帧信息。使用格式:select-frame 栈帧号
-
kill :结束当前程序的调试。
-
quit :退出gdb。