0.前言
可执行程序的生成时,必须要加-g参数,这样才能调试;//gcc -g test.c -o test
gdb调试的是可执行程序;//gcc test
1、启动gdb调试
1)gdb 可执行程序
2)gdb -q 可执行程序 //表示不打印gdb版本信息,因为默认会打印gdb的一些信息
2、退出gdb调试
quit (或q).
3、gdb调试
3.1list
显示10行代码,若再次运行该命令则显示接下来的10行代码
3.2run
使用gdb test只是装入程序,程序并没有运行,如果要使程序运行,在gdb提示符下输入run即可。
此时如果有错误,会在错误的地方停下。
3.3 以行号设置断点
break 行号,然后 run.
另外,还可以函数名作为断点, break 函数名
使用 info breakpoints 查看当前所有的断点。
3.4查看变量或表达式的值
print 变量或表达式
3.5让程序继续执行到下一个断点或运行完
continue
作用:让程序继续运行,直到下一个断点或运行完为止。
3.6让程序单步执行
next和step命令
作用:一次一条地执行程序代码
next和step的区别:
1)、如果遇到函数调用,next会把该函数调用当作一条语句来执行,再次输入next会执行函数调用后的语句
2)、step则会跟踪进入函数,一次一条地执行函数内的代码,直到函数的代码执行完,才执行函数调用后的语句
3.7结束当前调试
kill
例:(gdb) kill
Kill the program being debugged? (y or n) y
3.8使用core文件调试
方法1:
- gdp 可执行程序 core文件
参考该文
方法2:
- gdp 可执行程序
- core-file core的名字
- bt
参考该文
方法3:
- gdp 可执行程序
- run
定位到第10行中的段错误。