GDB调试总结

一、core分析

1、查看命令:

ulimit -c

启动命令:

ulimit -c ulimited

查看core文件:

gdb -c core.xxx a.out

 

2、生成core文件的路径在文件/etc/sysctl.conf中

cat /etc/sysctl.conf

sysctl.conf文件中科院设置的格式符号表格。。。

3、启动整个系统的内核转储功能

 

二、gdb调试

1、使用gdb调试的文件需要使用-g编译

(1)使用makefile编译,加-g

(2)使用configure,./configure CFLAGs = "-wall -o2 -g"

 

2、gdb调试

(1)启动:gdb a.out

(2)设置断点: break或者b

break 函数名 

 break 行号

break 文件名:行号

break 文件名:函数名

break +偏移量

break -偏移量

break *地址

通过info break(info b)查看断点情况

3、显示帧栈:backtrace或者bt(别名:info stack, info s, where)

显示所有帧栈:bt

显示开头N个帧栈: bt N

显示最后N个帧栈: bt full N

4、显示变量: print 变量名(或者p 变量名)

5、显示寄存器:info registers(或者info reg)

6、单步执行:next(n) ,进入函数内部执行step(p),逐条执行汇编指令:nexti stepi

7、继续执行:continue(c)

8、监视点:watch 变量,当发生变化时暂停(awatch被访问和改变时暂停,rwatch被访问是暂停)

9、删除断点和监视点:delete n (d n)

10、改变变量的值:set variable <变量>=<表达式>

11、attach到进程: attach 进程ID

attach 之后就能使用普通的gdb命令,需要将gdb和进程分离时使用detach,进程detach之后会继续运行。

12、条件断点:break 断点 if 条件

13、删除禁用断点:clear 文件名:行号

                  delete 断点编号

                  disable 断点编号

                  enable 断点编号

14、断点命令:commands 断点编号

                命令

              end

15、查看进程线程:i thr

    切换到相应的线程:thr 2

posted @ 2016-11-12 13:55  luizp  阅读(286)  评论(0编辑  收藏  举报