一 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. 零基础逆向工程21_PE结构05_数据目录表_导出表

    数据目录 1.我们所了解的PE分为头和节,在每个节中,都包含了我们写的一些代码和数据,但还有一些非常重要 的信息是编译器替我们加到PE文件中的,这些信息可能存在在任何可以利用的地方. 2.这些信息之所 ...

  2. kmem_alloc

    http://www.lehman.cuny.edu/cgi-bin/man-cgi?kmem_alloc+9

  3. C语言的time函数和localtime函数

    1.获取当前时间,并获取当前时间(即系统时间)距离1970年1月1日的时间间隔,以秒为单位. 2.获取指定时间距离1970年1月1日的时间间隔,以秒为单位.

  4. 打印机 Microsoft Print to PDF 所需的驱动程序 Microsoft Print To PDF 未知。登录之前,请与管理员联系,安装驱动程序。

    这个问题发生后,我觉得很疑惑,因为服务器上确定没有安装打印机.那么打印机是从哪里来的呢? 通过百度搜索,发现网上的一个帖子解答了我的疑惑.原帖地址:http://blog.chinaunix.net/ ...

  5. VB SMTP用户验证发送mail

    转自 http://www.jishuzh.com/program/vb-smtp%E7%94%A8%E6%88%B7%E9%AA%8C%E8%AF%81%E5%8F%91%E9%80%81mail. ...

  6. Oracle数据库常用的Sql语句整理

    Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...

  7. Linux运维笔记--第二部

    第2部-重要目录结构详解 1.回顾Linux目录结构知识 /dev/            设备目录 /etc/             系统配置及服务配置文件,启动命令的目录 /proc       ...

  8. Spring中使用事务搭建转账环境方法二 相对简便的注解方法 ——配置文件注入对象属性需要setter方法 注解方法,不需要生成setter方法

    XML配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  9. 关于lua 5.3 服务端热更新流程

    脚本的热更新的流程都大同小异, 第一步先保存旧代码的块的数据, 第二部加载新的代码块,第三步将旧代码块的局部和全局数据拷贝到新代码块的对应的 变量中. 在服务器热更新中,主要考虑热更的内容是什么, 一 ...

  10. 自定义AlertView的方法和改变Alert的弹出位置以及其宽度

    此方法在IOS7中不适合 一.自定义AlertView 1.首先新建一个OC类继承与AlertView. 2.然后再.m中添加方法 - (void)layoutSubviews 可以再这个方法里边改变 ...