GDB调试
来源:互联网 发布:linux报错ld返回1 编辑:程序博客网 时间:2024/06/06 09:38
一般来说,GDB主要帮忙你完成下面四个方面的功能:
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、动态的改变你程序的执行环境。
代码编译的时候要加 -g
如:要编译simple.c文件
gcc -Wall -g simple.c -o simple
gdb simple
l(或list查看源代码)
break 10 (在第十行设置断点)
info break(查看断点)(或者i b)
break func (在func的入口设置断点)
run(r,启动程序,这样程序就停止到了断点处)
s(然后单步跟踪他)
p i(查看 i 变量的值)
until (跳出循环)
c(运行到下一个断点处)
finish(不想跟踪 一个函数)
list(l) 查看最近10行源码
list fun 查看fun 函数源码
list file: fun 查看file 文件中的fun 函数源码
l 1 从第一行查看
l 1,15查看第一行到15 行的源码
l ,15查看到15行的源码
l fun 查看函数fun的源码
l test.c 查看这个文件
l test.c:fun 查看test.c的fun函数
break 行号
break fun
break file:行号
break file:fun
break if<condition> 条件成立时程序停住
b if i=10 如果i = 10 就停下来
info break(i b)查看断点
watch expr - 一量expr值发生改变(当表达式改变时就停下来)
watch i 当i发生改变时就会停下来
delete n 删除断点
单步调试:
continue (c) -运行至下一个断点
step(s) 单步跟踪,进入函数,类似于vc 中的step in
next(n)-单步跟踪,不进入函数,类似于vc 中的step out
finish 运行程序,直到当前函数完全返回,并打印函数返回时的堆栈地址和返回值及参数等信息
until 当压卷了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体
print 查看变量的值
ptype 查看类型
print array 查看数组
print *array@len 查看动态内存
print x = 5 改变运行时的数据
程序错误:编写程序的时候没有符合语言规范致编译错误
运行时错误:编译器检查不出这种错误,但在运行的时候可能会导致程序崩溃
逻辑错误:编译和运行都很顺利,但是程序没有干他该干的事情
段错误是由于访问非法地址而产生的错误:
可以先run程序,然后他会爆出 signal SIGSEGV 这个信号,下面会显示信息,
此时用bt 命令精确查出他所在的位置
core 文件调试
1.core文件
在程序崩溃时,一般会产生一个core文件,core文件记录的是程序崩溃时的内存映像,并加入调试信息。core文件生成的过程叫core dump
设置生成core文件
ulimit -c 查看core-dump状态
ulimit -c 数字(如:ulimit -c 1024)
ulimit -c unlimited
gdb 利用core文件调式
gdb 文件名core文件
bt
- GDB调试
- gdb 调试
- gdb调试
- gdb 调试
- GDB调试
- GDB调试
- GDB调试
- GDB调试
- GDB调试
- GDB调试
- gdb 调试
- GDB 调试
- gdb 调试
- GDB调试
- gdb调试
- gdb调试
- GDB 调试
- GDB调试
- hibernate4 映射集合属性 bag
- 《Swift入门》Ubuntu 14 server安装Swift运行环境
- 初步认识lodash.js
- spring线程池和事件发布机制
- 【入门DP】 神奇的口袋
- GDB调试
- Android基础部分再学习---activity的生命周期
- Android 测试
- 我的编程之路——知识管理与知识体系
- 想聊聊单反
- C++ 静态成员
- PCL入门
- C语言穷举法
- Android 小的知识片