这篇博客主要要记录一下自己在Linux操作系统Ubuntu下使用gbd调试程序的一些指令,以及使用过程中的一些心得。
使用方法
可以使用如下代码
gcc -g test.c -o test
或者
gcc test.c -o test
-g的选项最好添加,如果不添加,l指令无法被识别
-o的选项就是将输出的文件重命名,否则都是a.out
gdb的控制
-
l/L + 数字 指令
L/l用于查看调式的代码,后面添加的数字用于确定从第几行开始查看
但是一次最多只有10行
如果有参数,则从参数开始的10行。
-
r(run)指令
从头开始运行代码,遇到设置的断点,段错误以及程序运行结束之后自动回到gdb命令行。
如果运行的代码时需要参数,可以在r后面添加如:(gdb)r arg1 arg2
-
b + 数字 指令
该指令用于对指定行设置断点,使用r指令时就会在断点处停下来。
-
n 指令
n指令用于将程序往下执行一行代码,但该指令不会进入函数里面。
-
s(step)指令
s指令也用于将程序往下执行一行代码,但该指令会进入函数内部执行。
-
p(print)+ 表达式
可以打印表达式的值,用于在调试过程中查看各个变量,数字,函数调用等。
-
c(continue)
程序将继续向下运行,遇到设置的断点、段错误和程序运行结束时自动回到gdb命令行 。
设置多个断点时可以使用,r则会从开头开始执行。c从当前行开始。
-
bt / where
用于显示程序堆栈信息,一般在遇到段错误时使用。
-
q指令
q指令用于退出gdb调试。
-
ctrl+c 以及 signal
程序运行时输入 ctrl+c
,回到gdb调试模式,输入(gdb) signal <信号>
,向程序发送信号。
-
layout split
显示源代码和汇编窗口,能够看到断点位置,对照代码调试,更加直观。
可以自己写一个小程序,并使用编译完使用gdb调试一下,相信会有很多收获的