gdb相关命令

betball贝博app C语言, Linux 524 次浏览 没有评论

本来有visualgdb是把gdb的相关操作略过了。但是今天调试程序的时候说找不到exit.c文件,不知道是不是因为没有在linux本地调试的原因,于是简单学习一下gdb,以备不时之需。

gcc -g main.c -o gdbtest

这样会生成一个gdb调试的文件,注意后面使用一定要用这个文件,刚才通过gdb打开文件打开错了,出了莫名其妙的错误。

进入gcc环境内以后,

(gdb)file xxx //调试xxx程序

(gdb) list 10  //显示参数(10)所在的行数的前后各5行内容

(gdb)list 2,6 //显示从2到6行的内容

(gdb) run //运行程序

(gdb) break x (if i=1)//在第x行加上断点 x可以为行号,也可以为函数名;还可以再添加特定条件,适用于for循环等情况。

(gdb)info break//查看断点信息

(gdb)delete breakpoint n//删除n号断点,标号要通过上一条指令查询

(gdb)enable/disable breakpoint n

(gdb)clear//运行过程中,直接输入clear,清除当前位置的断点。或者后面加上行号来清除某一行的断点

(gdb)continue //继续执行

学到这里,本来我是以为visualgdb看不见子进程是没有本地调试的锅,结果发现直接用gdb还真的而是和visualgdb一模一样的。关于子进程的调试,决定再写篇博文。

(gdb)print <name>//输出变量名

(gdb)set <name>=2//设置变量,为了防止和gdb的参数冲突,一般要用set var <name>

print后可以加输出格式的限定

[cce]/x十六进制;/d十进制;/u十六进制无符号整型;
/o八进制;/t二进制;/a十六进制;/c字符;/f浮点[/cce]

(gdb)print *array@len//输出以array开始的len长度的内存空间的内容

(gdb)next 逐过程

(gdb)step逐语句

(gdb)jump跳转到某一行继续执行

(gdb) examine /nfu <adress>   可以缩写为x

(gdb)display /fmt expr自动显示

发表评论

邮箱地址不会被公开。

Go