一 gdb概述

  gdb调试器的目的是让你了解其他的程序在执行的时候发生了什么或者其他程序崩溃时正在做什么

  gdb主要能够在运行中做四类事情(包括这些事情中的一些附加的事情)来帮助你获取bugs

    a  运行程序,指定任何影响程序行为的东西

    b  让你的程序在指定的条件下停止

    c  当你的程序停止的时候,检查发生了什么事情

    d  改变程序中的内容,所以你能够尝试纠正一个bug带来的后果,并且继续了解另一个上述的情况

  你能够用gdb调试c和c++编写的程序。了解更多的信息,可以看section 15.4  【supported language】,page 199.和 section 15.4.1【c和c++】 199页

    部分支持d语言,更多的d信息  查看section15.4.2 d 205页

    部分支持....

    调试使用集合,子范围,文件变量或者内嵌函数的pascal程序并不是当前的工作。gdb不支持使用pascal语法的输入表达式,打印值,或者相似的特性。

    gdb能够用来调试fortran编写的程序,即使它可能有必要参考带有尾随下划线的变量

    gdb能够用来调试lbjective-c的程序,和使用apple/next或者gnu objective-c的运行库

    免费的软件

    gdb是受到gnu 通用公共许可证保护的免费软件。gpl给予你自由复制和修改一个许可的程序---但是每个人获得拷贝的人也可以自由的修改这个拷贝(这就意味着他们必须访问源代码),和自由的分发更多的拷贝。典型的软件公司用版权来限制你的免费权力。自由软件基金会用GPL协议来保持这些自由的权利。

    基本上,通用公共许可证是说你又这个自由,而且你不能从其他人身上拿走这些自由。

    免费的软件需要免费的文档

     当今自由软件社区的最大缺陷并不是软件,而是我们缺少包含的那些自由软件的良好的免费文档。许多我门非常重要的程序都不带有免费的参考手册和免费的介绍文本。文档是一个软件包中的重要组成部分。当一个重要的免费软件包不带有免费的手册和一个免费的教程时,这是一个很大的差距,当今我门有很多这样的差距。

    举例,例如perl  人们通常用的教程手册都是非免费的。怎么会这样呢?因为那些发布手册的作者发表了限制性的条款-不复制  不修改  源代码不可用--从自由软件世界中抠出了他们。

    这中情况并不是第一次发生了,并且远远没有结束。很多时候我们都听到一个GNU用户急切的描述他正在写一个手册,他打算给社区做贡献,但是只是了解到他通过签署了一个让它不免费的出版合同而导致计划泡汤了。

    自由软件等免费文档是一个自由的事情,而不是价格的问题。非免费手册的问题并不不在于出版商为印刷版收取费用-这本身就是好的。(自由软件基金会也会出售可打印的副本)。问题在于手册使用的限制。免费手册以源代码的形式提供,并且允许你复制和修改。而非免费的手册不允许。

    免费手册的自由标准大致与自由软件相同。再分发必须被允许(包括一般的各种商业分发),以至于手册能够附加在每个程序的拷贝上,包括在线和纸质的。

    修改技术内容的权限也是至关重要的。当人们修改软件,添加或者改变功能时,如果他们认真尽责也会修改手册-所以他们能够提供

 精确的文档为了修改程序。一个手册,让你别无选择只能写一个新的手册来记录一个对我们的社区没什么意义的改变版本的程序。

    修改方式的某些限制是可以接受的。例如,要求保留原作者的版权声明,分发条款,或者作者列表都是可以的。要求修改后的版本包含被修改的声明也是可以的。即使是不能删除或改变的整个部分也是可以接受的,只要特们呢处理非技术性的话题(比如这个)。这些限制是可以接受的,因为他们不妨碍社区正常使用手册。 

    然而,必须能够修改手册中所有的技术内容,并且通过所有正常的渠道将结果分发到所有通常的媒体中。否则,这些限制阻碍了手册的使用,他是非免费的,我们需要另一个手册来取代它。

    请传播有关这个问题的话。我们社区继续失去手册到专有出版。如果我们传播自由软件需要免费的参考手册和教程,也许下一个想通过撰写文档提供贡献的人在太迟之前会认识到,只有免费的手册才能对自由软件社区作出贡献。

    如果你正在编写文档,请坚持使用gnu自由文档许可或者其他的免费文档许可进行发布。请记住,这个决定需要您的批准--您不必让出版商去决定。如果你坚持的话,一些商业出版商会使用免费的许可证。但是他们不打算提供这个选项;这是由你来提出这个问题,并且坚定的说,这就是你想要的,如果同你打交道的出版商拒绝了你的要求,就请尝试其他的出版商,如果你并不确定提供的建议的许可是否免费,就写信给licensing@gnu.org。

    你能够鼓励商业出版商通过购买更多的免费的,非版权限制的手册和教程来出售,特别是从出版商那里支付他们的写作或者重大改进的副本。同时,尽量避免购买非免费的文档。检查之前你购买的手册的分发条款,并坚持要求您的业务的任何人都必须尊重您的自由。检查这本书的历史,尝试奖励已经付款的给作者的发布者。

    自由软件基金会维护的其他出版上发布的一个免费的文档列表。

1.a sample GDB session

     你能够随时随地的阅读这个文档关于gdb的所有信息。然而,一些少量的命令足以开始使用这个调试器。这一章阐述这些命令。

    在这个示例会话中,我们强调像这样的用户输入:输入,使其更容易从围绕在输出中挑选出来。

     

gdb调试手册 一 gdb概述的更多相关文章

  1. GDB调试手册[转]

    Linux 包含了一个叫gdb 的GNU 调试程序.gdb 是一个用来调试C和C++程序的强力调试器.它使你能在程序运行时观察程序的内部结构和内存的使用情况.以下是 gdb 所提供的一些功能:它使你能 ...

  2. gdb调试相关

    GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等 ...

  3. Linux gcc/g++下GDB调试及其调试脚本的使用

    GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB ...

  4. GDB 调试 ---转 比较全的东东

    转自 程序人生:http://www.programlife.net/gdb-manual.html Linux 包含了一个叫gdb 的GNU 调试程序.gdb 是一个用来调试C和C++程序的强力调试 ...

  5. GDB调试基础使用方法

    尽管目前使用的VS code可以使用插件一键构建和运行程序,但GDB作为调试利器,还是值得花时间去学习的. 概述 GDB(GNU Debugger) 是一个由GNU开源组织发布的.UNIX/LINUX ...

  6. Linux——【转】gcc编译与gdb调试简要步骤

    原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...

  7. gcc编译与gdb调试简要步骤

    http://blog.chinaunix.net/uid-24103300-id-108248.html 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定 ...

  8. 20145234黄斐《信息安全系统设计基础》GDB调试汇编堆栈过程分析

    堆栈跟踪 首先编辑一个程序 用gcc编译,再使用gdb调试,发现gdb尚未下载 下载后重新运行gdb 设置断点:b+行号或者"main" 运行:r frame:打印出的信息:栈的层 ...

  9. gdb调试汇编堆栈分析

    代码(src/05/gdb.c) int g(int x) { return x + 4; } int f(int x) { return g(x); } int main(void) { retur ...

随机推荐

  1. MFC CDialog/CDialogEx DoModal ALT

    Questions: I'm using MFC CDialog/CDialogEx to show a modal dialog with DoModal.usually it works with ...

  2. reactnative资源

    http://facebook.github.io/react-native/docs/getting-started.html

  3. 2017微软骇客马拉松精彩大回Fun:不一样的Hacker,一Young的Cool

    丹棱君有话说:一年一度激动人心的骇客马拉松大会结束了!这场内部创意大比拼硕果累累,丹棱君准备好了 6 组 Cool 骇客的别 Young 作品——沉浸式销售工具如何能守得“云”开见月明?“骇客马拉松超 ...

  4. 排序算法C语言实现

    大学有一门课程叫做数据结构,严蔚敏的课本,其中详细介绍了集中经典的排序算法,学习复习反复几次,但是直到现在仍然只记得名字了,所以想记录下来,随时复习直至牢记于心.经常面试的朋友知道,排序算法在面试中出 ...

  5. Windows系统下查看文件编码类型

    这是一个程序员的最基本的技能,原谅我到现在才去了解 以前只知道window操作系统下文件大部分默认编码是ANSI,中文版是GBK编码 如果想要查看或者修改文件编码的话有两种方式 一:用记事本打开文件, ...

  6. tcp、http和socket的区别

    本文原链接:https://www.jianshu.com/p/88d69454bdde tcp.http和socket的区别 一:tcp协议 tcp协议属于传输层协议(UDP也属于传输层协议,但是U ...

  7. python_88_xml模块

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单例如创建xmltest.xml文件内容如上 注:/代表自结束符号 <?xml version=&quo ...

  8. python_102_属性方法

    # 属性方法:把一个方法变成一个静态属性 #1 class Dog(object): def __init__(self,name): self.name=name @property#属性 def ...

  9. Kafka 完全分布式集群环境搭建

    思路: 先在主机s1上安装配置,然后远程复制到其它两台主机s2.s3上, 并分别修改配置文件server.properties中的broker.id属性. 1. 搭建前准备 示例共三台主机,主机IP映 ...

  10. Python静态方法 类方法

    通常情况下,类中函数中定义的所有函数,,都是对象的绑定方法,除此之外,还有专门的静态方法和类方法,这两个是专门给类使用的,但是对象非要调用也是不会报错的. 对象在调用的时候会把自己传递给self,也就 ...