gdb调试手册 一 gdb概述
一 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概述的更多相关文章
- GDB调试手册[转]
Linux 包含了一个叫gdb 的GNU 调试程序.gdb 是一个用来调试C和C++程序的强力调试器.它使你能在程序运行时观察程序的内部结构和内存的使用情况.以下是 gdb 所提供的一些功能:它使你能 ...
- gdb调试相关
GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等 ...
- Linux gcc/g++下GDB调试及其调试脚本的使用
GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB ...
- GDB 调试 ---转 比较全的东东
转自 程序人生:http://www.programlife.net/gdb-manual.html Linux 包含了一个叫gdb 的GNU 调试程序.gdb 是一个用来调试C和C++程序的强力调试 ...
- GDB调试基础使用方法
尽管目前使用的VS code可以使用插件一键构建和运行程序,但GDB作为调试利器,还是值得花时间去学习的. 概述 GDB(GNU Debugger) 是一个由GNU开源组织发布的.UNIX/LINUX ...
- Linux——【转】gcc编译与gdb调试简要步骤
原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...
- gcc编译与gdb调试简要步骤
http://blog.chinaunix.net/uid-24103300-id-108248.html 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定 ...
- 20145234黄斐《信息安全系统设计基础》GDB调试汇编堆栈过程分析
堆栈跟踪 首先编辑一个程序 用gcc编译,再使用gdb调试,发现gdb尚未下载 下载后重新运行gdb 设置断点:b+行号或者"main" 运行:r frame:打印出的信息:栈的层 ...
- gdb调试汇编堆栈分析
代码(src/05/gdb.c) int g(int x) { return x + 4; } int f(int x) { return g(x); } int main(void) { retur ...
随机推荐
- 第二章 你第首个Electron应用 | Electron in Action(中译)
本章主要内容 构建并启动Electron应用 生成package.json,配置成Electron应用 在你的项目中包含预先构建Electron版本 配置package.json以启动主进程 从主进程 ...
- 编写xcode5插件需要增加DVTPlugInCompatibilityUUIDs
之前使用的xcode4.6的插件在升级到xcode5后不能使用了,查了很多资料,终于知道是缺少了DVTPlugInCompatibilityUUIDs 请在插件项目plist文件中加入DVTPlugI ...
- 从照片网站pexels批量爬取照片
调试中,未成功. from bs4 import BeautifulSoup import requests headers={ #'User-Agent':'Nokia6600/1.0 (3.42. ...
- RAC数据库后台进程介绍
在RAC数据库上会比单实例数据库多一些进程,这些进程是RAC特有的,为了实现集群数据库功能而设置的. 10g RAC特有进程:$ ps -ef|grep ora_oracle 4721 ...
- URAL 2027 URCAPL, Episode 1 (模拟)
题意:给你一个HxW的矩阵,每个点是一个指令,根据指令进行一系列操作. 题解:模拟 #include<cstdio> #include<algorithm> using nam ...
- Python 多线程应用
同步锁 import time import threading def subNum(): global num # print("ok") lock.acquire() # 加 ...
- CPP-基础:C/C++数组名与指针的区别
2005-08-23 08:36 来源:天极网 作者:宋宝华 责任编辑:方舟·yesky 引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用.于是乎,很 ...
- CPP-基础:extern"C"
简介:extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的:其次,被它修饰的目标是“C”的.让我们来详细解读这两重含义. 含义: 1.被e ...
- nfs-ganesha使用
一 nfs-ganesha在centos7上安装 yum -y install centos-release-gluster yum install -y nfs-ganesha.x86_64yum ...
- 如何使用动画库animate.css
animate.css是一个CSS3动画库,里面预设了抖动(shake).闪烁(flash).弹跳(bounce).翻转(flip).旋转(rotateIn/rotateOut).淡入淡出(fadeI ...