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 ...
随机推荐
- SQL基本语法备忘
注:以下演示是在mysql命令行下的操作 数据库相关操作 create database mytest; --创建数据库 create database if not exists mytest; - ...
- Windows环境中,通过Charles工具,抓取安卓手机、苹果手机中APP应用的http、https请求包信息
Windows环境中,通过Charles工具,抓取安卓手机.苹果手机中APP应用的http.https请求包信息1.抓取安卓手机中APP应用的http请求包信息1)在电脑上操作,查看Windows机器 ...
- 命令方式重新签名apk
1.(每个指令之间要有一个空格) 注:拿到一个apk后,首先删除META-INF. 1.如果你的电脑装的是jdk1.6,就用下面的命令: 打开命令符,首先直接输入: Jarsigner -keysto ...
- 使用nginx搭建一个简单的负载均衡
在windows系统上使用IIS模拟出两个不同服务器的站点: 然后再NGINX使用轮询机制配置两个服务器以及虚拟服务器的端口: 需要注意的是,配置虚拟代理域名的话需要找到windowsC盘下的host ...
- EF6.0注意事项
EF6 1.必须要添加Entitiframework 2.必须要添加必须要添加Entitiframework.Sqlserver 3.单元测试一定要有配置文件里面一定要有连接字符串和初始化配置文件节点 ...
- UVA 1153 Keep the Customer Satisfied 顾客是上帝(贪心)
因为每增加一个订单,时间是会增加的,所以先按截止时间d排序, 这样的话无论是删除一个订单,或者增加订单,都不会影响已经选好的订单. 然后维护一个已经选好的订单的大根堆(优先队列),如果当前无法选择的话 ...
- Array - Two Sum
import java.util.HashMap; import java.util.Map; /** * 分析: * 普通实现-嵌套循环两次,时间O(n2),空间O(1) * 复杂实现-循环一次,时 ...
- 2018.5.11 Java利用反射实现对象克隆
package com.lanqiao.demo; /** * 创建人 * @author qichunlin * */ public class Person { private int id; p ...
- android上部署tensorflow
https://www.jianshu.com/p/ddeb0400452f 按照这个博客就可以 https://github.com/CrystalChen1017/TSFOnAndroid 这个博 ...
- CPP-STL:vector的内存释放
1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小.先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式 ...