本文共 1170 字,大约阅读时间需要 3 分钟。
gdb可以用来调试C和C++程序
gdb常用命令
gcc -Wall -g filename.c -o filename //编译时需要加-g参数gdb filename //进入调试l(list) //显示代码b(break) //设置断点bn //在第n行设置断点r(run) //运行程序n(next) //下一步,但不进入函数,相当于VS中的F10s(step) //表示单步进入函数,相当于VS中的F11p(print) //p I 打印变量Ic(continue) //运行到最后或者遇到新的断点q(quit) //退出
gdb调试命令列表
set args 运行时的参数 指定运行时的参数,如set args 2show args 查看设置好的运行参数show paths 查看程序的运行路径pwd 显示当前工作目录info b 查看所设断点break[文件名:]行号或函数名 <条件表达式> 设置断点tbreak[文件名:]行号或函数名 <条件表达式> 设置临时断点,到达后被自动删除delete[断点号] 删除指定断点,其断点号为info b中的数值,若缺省断点号则删除所有断点disable[断点号] 停止指定断点,使用info b仍能查看此断点。同delete一样,缺省断点号则停止所有断点enable[断点号] 激活指定断点,即激活被disable停止的断点condition[断点号] <条件表达式> 修改对应断点的条件ignore[断点号]在程序执行过程中,忽略对应断点num次finish 从当前函数中退出list <行号> | <函数名> 查看指定位置代码bt 调用堆栈,可以查到调用哪些函数尚未返回 函数名> 行号> 条件表达式> 条件表达式> 条件表达式>
gdb调试段错误(Segmentation fault)
core文件中保存着程序崩溃的现场 针对段错误,可以通过ulimit -c unlimited设置core file size为不限制大小。 设置完毕后,可以通过ulimit -a进行查看,再次运行程序,就会产生core文件: gcc -g test.c ./a.out 通过gdb可执行core文件,进行调试: gdb a.out core。 通过bt调用堆栈可以看到程序段错误时的现场,通过f1可以直接切换到程序现场。 查看程序运行过程中的内存: x /20xb &arr 20为20个字节,x代表十六进制,b为一个字节形式,也可以将b换成w,每四个字节进行显示转载地址:http://rxxmb.baihongyu.com/