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)  +行号/函数名

           另外设置断点的时候还可以用条件表达式(if)

  删除断点:delete(d) + 断点号

 查看断点:info break(i b)

3)      查看变量信息:

Print  查看变量值

     Ptype  查看变量类型

4)  动态改变程序的执行环境:

Print  变量=value     动态改变程序运行时变量的值

5.2  运行程序

  1)      run(r)  运行程序

  2) run   + arg1  arg2…… (参数列表)

5.3  查看源码

  1)      list(l)  查看最近10行源码

     l  2,10  查看第2行到第10行的源码

    l   ,15  查看最多到第15行的源码

  2)  list +fun(函数名)       查看fun函数源码

  3)  list +file:fun        查看file文件中的fun函数源码

  4) list +file:15         查看file文件中的第15行左右的源码

5.4  设置断点(break)与观察点(watch)

  1)      break  行号

  2)  break  函数名

  3)  break  file:行号

  4)  break  file:函数名

  5)  break  if <condition>      条件成立时程序停住

  6) info    break(i b)         查看断点

  7)  watch   expr             一旦expr值发生改变,程序就停住

  8) delete   +断点编号       删除断点

5.5  单步调试

  1)  continue(c)       运行至下一个断点

  2)  step(s)          单步跟踪,进入函数,类似于VC中的step  in

  3)      next(n)               单步跟踪,不进入函数,类似于VC中的step  out

  4)      finish                  运行程序,直到当前函数返回,并输出函数的返回值。

  5)  until                    退出循环体(for)

5.6  gdb常用命令总结

  Run(r)                  运行程序

  List(l)                   列出源代码

  Break(b)              设置断点

  Info break(i b)             查看断点信息

  Continue(c)                   继续运行程序,直到下一个断点

  Watch                       设置观察点,一旦观察值发生改变,程序就停住

  Step(s)                           单步跟踪,进入函数,类似于VC中的step  in

  Next(n)                          单步跟踪,不进入函数,类似于VC中的step  out

  Finish                        退出函数,并输出函数的返回值。

  Until(u)                     退出循环体

  Print(p)                     查看变量值

5.7 一些细节知识:

  1.在gdb调试过程中按Enter键代表重复执行上条命令;

  2.几个退出命令的比较:

    Until 退出循环(for)

    Finish 退出函数

    q    退出gdb

时间: 2024-10-14 19:43:09

05.gdb入门(上)的相关文章

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc

第六课 GDB调试 (上)

序言: 初学者经过学习前面的Makefile知识,信心满满,内心觉得应该要好好学习不单掌握语言的编写,也要学会相对应的工具调高开发效率.有时我们写出来的代码经过执行结果却跟我们预期不一样那怎么办呢,这个时候就要调试了.说到调试有经验的开发童鞋知道在windows下游大名鼎鼎的VS集成平台,那么在linux下呢,特别是编写C.C++有什么工具可以方便我们调试呢,这里我给大家推荐的就是GDB,它也是GNU的debugger,专门为调试而生的. 知识点: gdb的大致分为以下功能: 1.启动程序: 2

调试利器GDB(上)

调试利器GDB(上) 1.1 GDB初识 1.1.1什么是GDB? GDB是GNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态 1.1.2为什么需要GDB? 软件产品的研发过程必然伴随bug,调试时软件开发中不可或缺的技术(调试工具很重要) 1.1.3 DBG与binutils 1.2 GDB的常规使用 1.自定义程序得到启动方式(指定影响程序运行的参数)2.设置条件断点(在满足条件时程序暂停执行)3.回溯检查导致程序异常结束的原因(core dump)

06.gdb入门(下)

◊基本框架: a)         查看运行时数据 b)         程序错误类型 c)         Gdb调试段错误 d)         Core文件调试 6.1  查看运行时数据 1)  print                                      查看变量值 2)      ptype                           查看变量类型 3)  print  array              查看静态数组 4)  print  *[ema

网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态

第01节:继承 回顾 面向对象的4个特点: A(抽象) P(多态)I(继承)E(封装) 前两个单元:AE 本单元: PI 第02节:构造函数和析构函数 派生类继承的成员 派生类继承 ctor 和 dtor 吗? 派生类不继承的特殊函数 构造函数 (C++11已允许继承) 析构函数 作为特权地位的友元函数 赋值运算符函数 #include <iostream> struct A { A(int i) { } A(double d, int i) { } // ... }; struct B :

网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)

第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温馨提示:本次作业的提交截止时间已过,无法成功提交作业.你可以在输入框中输入答案作为练习,但是所有答案都不会计入最后成绩. 请你练习编写一个C++程序,体会C++程序与C程序的不同之处.由于本作业需要同学们互评,因此作业提交时间期限很短,在题目发布后一周内就必须提交完成.超时的同学将无本次测验成绩,不参加互评会导致成绩被扣分.

Shell 脚本入门--上

大家好!今天分享的是一些shell脚本的基础知识,分篇为大家介绍,本篇介绍内容有:变量(分类.赋值.查询.引用).算数运算的实现. shell脚本简介 计算机高级语言分为两种类型,一种是面向对象型(如java.c#).一种是面向过程型(如shell.python).性质上的区别在于面向对象型试用于大型复杂的环境,可以更加精确细致的提供服务,缺点就是语法结构繁琐且严谨.而面向过程的语言,简单便捷好上手,但是不适用于复杂的环境.打个比方:现在有个大型的机械项目,一位经验丰富的老设计师,带着几位年轻的

前端05.js入门之BOM对象与DOM对象。

一.关于BOM对象. BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相关的动作. 用于操控用户浏览器. 1.window对象: 所有浏览器都支持 window 对象. 概念上讲.一个html文档对应一个window对象. 功能上讲: 控制浏览器窗口的. 使用上讲: window对象不需要创建对象,直接使用即可. 下面是window对象的常用方法: alert()            显示带有一段消息和一

Flask入门-上传的问题

flask.py from flask import Flask, render_template, request, redirect, url_for from werkzeug.utils import secure_filename from os import path app = Flask(__name__) @app.route('/') def hello_world():     return render_template('index.html', title='Welc