06.gdb入门(下)

◊基本框架:

  a)         查看运行时数据

  b)         程序错误类型

  c)         Gdb调试段错误

  d)         Core文件调试

6.1  查看运行时数据

  1)  print                                      查看变量值

  2)      ptype                           查看变量类型

  3)  print  array              查看静态数组

  4)  print  *[email protected] 查看动态内存(malloc),也可以查看静态数组。

  5)  print  x=5                 动态改变运行时数据

6.2  程序错误类型

  1)  编译错误:  程序语法上的错误,可以借助gcc来查找错误。

  2)      运行错误:编译器检查不出来,但在运行时可能会导致程序崩溃。

    比如说:非法的地址访问。

  3)  逻辑错误:编译和运行都很顺利,但是程序没有干它该干的事。

6.3  Gdb调试段错误

  段错误是由于访问非法地址而产生的错误,主要有两种:

  1)  访问系统数据区

        例如:往系统保护的内存地址写数据;

  2)  内存越界

        例如:数组越界,访问到不属于该数组的内存区域。

      注意:写程序的时候要尽量避免内存越界,因为有时候即使内存越界了,系统也不报错。

6.4  Core文件调试

1)core文件

把进程崩溃时的当前内存状态信息(内存印象)输出到core文件(进程的尸体)里,然后可以将出错的可执行文件和core文件提交给gdb,这样就可以精准定位错误。

     Core文件的生成过程叫做core  dump。

2)      设置生成core文件

Ulimit  –c            查看系统默认生成的core文件的大小。

     Ulimit  -a            查看所有的参数状态

Ulimit  -c  unlimited  将默认生成的core文件大小设置成无限制。

3)   Gdb利用core文件调试

    首先:Gdb  +可执行文件 +core文件;

    然后:利用bt(backtrace)命令把出错处的函数调用关系找出来.

时间: 2024-10-09 03:19:33

06.gdb入门(下)的相关文章

Shell 脚本入门--下

Shell 脚本入门--下 本为大家介绍,本篇介绍内容有:逻辑运算符(& .| .!.^).测试命令.脚本的执行过程 1.逻辑运算符 (1)&与和&&短路与 True .false 1       0 与: 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 对于&来说,如果左侧条件为false,也会计算右侧条件的值.特点只要有一个false就认为是false 短路与: false && =

2015.11.06 学习Ubuntu下常用命令

2015.11.06 学习Ubuntu下常用命令 1.关闭防火墙:ufw disable 2.开启防火墙:ufw enable 3.防火墙状态:ufw status 4.查看占用的端口:#lsof -i 5.查看某一个端口:#lsof -i:8080  或者是: #netstat -apn|grep 8080————接着:#ps -aux|grep 进程号 6.结束占用端口的进程:#killall 进程名 7.自己写一遍,记得牢!

第七课 GDB调试 (下)

1序言: 通过前面一节第六课 GDB调试 (下)文章,可以掌握理解了gdb调试:怎么启动.运行,打断点.查看变量.甚至改变变量等的知识,今天来大概讲解下调试bug的类型. 2知识点: 2.1 就像之前所说的没有任何一个程序员敢打包票自己写的代码是没任何bug,bug总会有意无意的出现在我们眼前,当程序运行结果于我们预期结果不一样的时候这时候我们就应该调试,总的来说bug分为:语法错误.逻辑错误.硬件异常: 3原理: 3.1 语法错误:一般情况下出现在编译的时候会有提示编译错误这时候我们就可以马上

调试利器GDB(下)

调试利器GDB(下) 2.1数据断点 GDB中支持数据断点的设置,watch命令用于监视变量是否被改变(本质为硬件断点)用法:watch var_name 2.2 GDB中的内存查看 GDB中可以查看任意内存区域中的数据,命令格式:x /Nuf expressionN -需要打印的单元数u -每个单元的大小f -打印数据的格式其数据格式如下: 2.3 GDB中的打印格式 实例:判断系统大小端 2.4函数调用栈查看 backtrace,查看函数调用的顺序(函数调用栈的信息)frame N 切换到栈

05.gdb入门(上)

◊基本框架: a)         Gdb功能 b)         运行程序 c)         查看源码 d)         设置断点(break)与观察点(watch) e)         单步调试 f)          Gdb常用命令总结 5.1        gdb功能 1)启动程序: Run(r),另外启动程序的时候还可以带上参数(argv[1],argv[2]……) 2)    设置断点: 设置断点:break(b)  +行号/函数名   另外设置断点的时候还可以用条件表达

ArcEngine中featurecursor分别在sde数据库和gdb数据库下的遍历问题

问题描述 //一般的循环遍历步骤 IFeatureCursor featureCursor = featureClass.Search(null,false); IFeature feature = null; while((feature = featureCursor.NextFeature())!=null) { } 以上是常用的循环遍历的步骤,最后遍历到feature为null后退出while循环,这时如果再执行一次featureCursor.NextFeature()语句: 1.在gd

网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业1:OJ编程

第7单元 - 作业1:OJ编程 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本作业是第7单元作业系列. 本单元[多个作业]之间有[前后依赖关系]. 本单元作业应[按照次序]完成. 依照学术诚信条款,我保证此作业是本人独立完成的. 1 阅读所给的代码,理解代码的主要功能及原理 补充缺失代码 提交OJ判分(10分) 题目内容: 以单例模式创建一个屏幕Screen

网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板

第10单元 - 单元作业:OJ编程 - 创建数组类模板 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本单元作业练习创建模板类.单元作业会涉及冒泡排序.线性查找等算法.如果对排序.查找不熟悉,可以自行baidu或者google 依照学术诚信条款,我保证此作业是本人独立完成的. 1 编写一个数组类模板 Array,能够存储不同类型的数组元素.对数组元素进行查找.

网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理

第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 基于第8单元的作业内容,为图形类添加异常处理代码 依照学术诚信条款,我保证此作业是本人独立完成的. 1 基于第8单元作业2的代码,为图形类添加异常处理的代码.(5分) 题目具体内容参见: 第9单元 - 作业5说明:[OJ - 使用异常进行图形类的错误