标签归档:GDB

Linux c 现实生活:使用GDB调试器

GNU的调试器GDB提供许多有用的特性来支持对机器级程序的运行时评估和分析。
一般情况下通过阅读代码,我们可以推断出程序的运行。有了GDB,我们可以观察正在运行的程序,同时有可以对正在运行的程序进行控制,这就使研究程序的行为变为可能。
下面我们将介绍GDB的命令:
开始和停止
quit exit GDB
run Run your program
kill Stop your program
断点
break 展示所有断点列表
break 5 设置第五行代码为断点
list 显示所有断点列表
delete 5 删除第5个断点
delete 删除所有断点
执行
next 继续执行语句,但是跳过子程序的调用。使用格式:
next n 执行n条语句
nexti 单步执行语句,但和next不同的是,它会跟踪到子程序的内部,但不打印出子程序内部的语句。
step 与next类似,但是它会跟踪到子程序的内部,而且会显示子程序内部的执行情况。
stepi :与step类似,但是比step更详细,是nexti和step的结合。使用格式同上。
检查代码
disas 查看当前代码的反汇编
检查数据
print test 打印变量test的值

GDB命令用法 :
1 首先编写代码 一个for循环代码
for print
[root@localhost ~]#gcc -o gdb -g gdb.c 生成可调试版本
[root@localhost ~]#GDB gdb //载入程序进入GDB模式
(gdb) list 将打印出全部源码
gdb list
可根据list前面的标号,设置断点
(gdb) break 6
Breakpoint 1 at 0x4004dc: file gdb.c, line 6.
(gdb)run //由于第6行设置了断点,可以看见程序运行第6行后停止
(gdb)next //可以使程序继续向下运行
(gdb)disas 可以查看当前代码的 反汇编代码
(gdb)print i 可以打印出此处代码 i的变量值 调试完程序后
(gdb)quit 退出gdb调试模式

以上主要介绍了
1 如何调试程序 如何退出调试器
2 如何设置断点
3 断点出变量查看
4 反汇编代码查看