当前位置:首页 > gdb手册
GDB用户手册
目录
目录 .................................................................................................................................................. 1 摘要 .................................................................................................................................................. 2
自由软件 ................................................................................................................................... 2 自由软件急需自由文档 ........................................................................................................... 2 GDB的贡献者们 ........................................................................................................................ 4 1.一个简单的GDB会话 .............................................................................................................. 8 2.征服GDB的进与出 ................................................................................................................ 13
2.1调用GDB ......................................................................................................................... 13
2.1.1 选择文件 ............................................................................................................... 14 2.1.2 选择模式 ............................................................................................................... 16 2.1.3 启动期间,GDB做了什么 ................................................................................. 19 2.2 退出GDB ........................................................................................................................ 20 2.3 Shell命令 ......................................................................................................................... 21 2.4 Loging输出 ...................................................................................................................... 21 3.GDB命令 ................................................................................................................................. 22
3.1命令语法 ........................................................................................................................... 22 3.2命令完成 ........................................................................................................................... 23 3.3获得帮助 ........................................................................................................................... 25 4.在GDB下运行程序 ................................................................................................................ 29
4.1 适合调试的编译 .............................................................................................................. 29 4.2 启动程序 .......................................................................................................................... 30 4.3 程序的参数 ...................................................................................................................... 32 4.4 程序的环境 ...................................................................................................................... 32 4.5 程序的工作目录 .............................................................................................................. 34 4.6 程序的输入输出 .............................................................................................................. 35 4.7 调试某个已运行的进程 .................................................................................................. 36 4.8 杀掉子进程 ...................................................................................................................... 37 4.9 多线程程序的调试 .......................................................................................................... 37 4.10 多进程程序的调试 ........................................................................................................ 40 5.0停止与继续 ............................................................................................................................... 42
摘要
象GDB这样的调试程序,目的就是让你可以查看其它程序的内部运行过程,或者是在它崩溃的那一时刻它在做什么。
GDB能做4件事(这些还需附加其他的一些事),帮助你捕获在场的错误: ·启动程序,设定任何可以影响它行为的东西。 ·在特定的条件下使程序停止。 ·当程序停止时,分析发生了什么。
·改变程序里的一些东西,进行一个由于bug所导致的结果的矫正性试验,同时继续了解另外一个bug。
可以使用GDB调试用C和C++编写的程序,更多信息参见支持的语言,及C与C++。部分支持Modula-2,Modula-2的更多信息参见Modula-2。
在调试使用sets、subranges、file variables或嵌套函数的Pascal程序时,目前不能工作。GDB不支持entering expressions、printing values或者类似特性的Pascal语法。
GDB可以调试Fortran写的程序,尽管那必然会涉及到带有下划线后缀的一些变量。 GDB可以调试Objective-C写的程序,既可以使用Apple/NeXT运行时库,也可以使用GNU Objective-C运行时库。
自由软件
GDB是自由软件,受GNU公共许可证(GPL)保护。GPL给予了你自由复制或改编程序的许可——就是说获得拷贝的人也就获得了自由修改它的权利(这意味着他们必须有权访问源代码),而且可以自由的发布更多的拷贝。大部分软件公司所使用的版权限制了你的自由。自由软件基金会利用GLP保护了这些自由。
基本上来说,公共许可证是一个说明你拥有这些自由的许可证,而且你不能把这些自由从任何人那里占为己有。
自由软件急需自由文档
当今的自由软件社区所存在的最大缺憾不在于软件——而在于没有我们可以随同自由
软件包含在一起的好文档。好多我们十分重要的程序没有一同提供自由的参考指南和介绍性文本。对任何一个软件包来说,文档是最基本的部分。当一个重要的自由软件包没有与一个自由手册或指南一同提供时,那就是一个极大的缺憾。如今,我们拥有太多这样的缺憾了!
拿Perl来说,人们日常所使用的指导手册就不是免费的。为什么会这样呢?因为这些手册的作者们在发表它们的时候伴有很多限制项目——不能复制、不能修改、不能得到源文件——把它们从自由软件世界中驱逐出去了。
这类的事情已经不只发生过一次了,而且今后还会陆续发生。我们经常听到某位热心的GNU用户说他正在编写的一个手册,他打算把它捐献给社区,可没想到他签署了出版合同而使这个手册不自由了,所有的期望全都破灭。
自由文档,就像自由软件一样,是自由的,不需要付费的东西。非自由手册的问题不在于发行商为印刷拷贝所要承担的费用——只要它本身很好就行(自由软件基金会也出售印刷拷贝),而在于这个问题会约束手册的利用。自由手册可以以源代码的方式获得,允许复制与修改。非自由手册是不允许这么做的。
自由文档自由度的标准,一般来说与自由软件差不多。再发布(包括很多常规的商业再发布)必须被允许,不管是以在线形式还以书面形式,以便手册可以伴随着程序的每一份拷贝。
允许有关技术性方面的内容的更正也是至关重要的。当人们更改软件,添加或改变其某些特性时,如果他们负责任的话,也将会修改相应的手册——因而,他们能够为修改过的程序提供准确而清晰的文档。某个手册的页数你是无法决定的,但是为某个程序的变更版本写一份全新的手册,对于我们的社区来说,那真是没有必要。
在改进过程中所运用的某些限制是合理的。例如,要求保持原作者的版权通告、发布条款、以及作者名单,是没有问题的。在修正版本中包含是他们更正的通告也是没有问题的。只要论述的是非技术性的话题(就像这一章),可以接受连续完整的章节不可删除或被更改。能够接受这些限制,是因为它们不会妨碍社区对手册的正常使用。
无论如何,必须允许对手册中所有关技术性方面的内容进行修改,然后通过所有正常的通道,利用所有常规的媒质,发布这个结果。否则,这些限制就妨碍了对手册的使用,那么它就是非自由的了,我们就得需要一个新的手册来代替它了。
请散布有关这一论点的言辞。我们的社区仍然在遗失好多手册,这些手册都在成为私有出版物。如果我们趁早散布自由软件急需自由参考手册和指南这样的言辞的话,也许下一个投稿人就会意识到,只有少数的手册投稿给了自由软件社区。
如果你正在撰写文档,请坚持在GNU的自由文档许可证或其他的自由许可证下出版它。别忘了,这个决策是需要争得你的赞同的——你不用理会出版社的决策。只要你坚持,某些出版社会使用自由许可证的,但是他们不能奢求有买卖的特权;那需要由你自己来发行,并且坚定地说:这就是你想要的。如果这个出版社拒绝了你的生意,那就再换一家。如果你不
能确定某个被提议的许可证是自由的,就写信给licensing@gnu.org。
你可以使用购买的方式来鼓励商业出版社出售更多的免费的,非赢利版权的手册与指南,尤其是购买那些来自于出版社的拷贝,付给他们撰写或作重大改进的费用。同时,尽量完全避免购买非自由的文档。在购买之前,先查看一下发布条款,不管谁要做你的生意都必须尊重你的自由。查看书的历史,设法奖励支付了作者们工资的那些出版社。
自由软件基金会在http://www.fsf.org/doc/other-free-books.html维护了一个已经由其他一些出版社出版了的文档的列表。
GDB的贡献者们
Richard Stallman是GDB的原作者,也是其他好多GNU程序的原作者。好多人已经对它的开发作了贡献。谨以此节来表彰那些主要的贡献者们。自由软件的一个优点就是每个人都无偿的为它作贡献。遗憾的是,我们无法逐一向他们表示感谢。在GDB的发布中,有一个“ChangeLog”文件,做了极为详尽的说明。
2.0版本以前的大量变化已湮灭在时间的迷雾中。
恳请:极力欢迎对本节的补充。如果您或您的朋友(或者是敌人,为了公平),不公平地在这个列表中被遗漏了,我们愿意加入您的名字。
为了使那些可能被遗忘的人们的工作不至于徒劳无功,在此特别感谢那些带领GDB走过各个重要发布版的那些人:Andrew Cagney(发布了6.1, 6.0, 5.3, 5.2, 5.1 和5.0版);Jim Blandy(发布了4.18版);Jason Molenda(发布了4.17版);Stan Shebs(发布了4.14版);Fred Fish (发布了 4.16,4.15,4.13,4.12,4.11,4.10和4.9);Stu Grossman 和John Gilmore (发布了4.8,4.7,4.6,4.5和4.4版);John Gilmore(发布了4.3,4.2,4.1,4.0和3.9版);Jim Kingdon(发布了3.5,3.4和3.3版);以及Randy Smith(发布了3.2,3.1和3.0)。
Richard Stallman,在Peter TerMaat、Chris Hanson、和Richard Mlynarik的多次协助下,完成到了2.8版的发布。
Michael Tiemann是GDB中大部分GNU C++支持的作者,得益于来自Per Bothner 和Daniel Berlin的其他的一些重要贡献。James Clark编写了GNU C++反签名编码器(demangler)。早期在C++方面的工作是由Peter TerMaat做的(他也做了大量的到3.0发布版的常规更新工作)。
GDB是使用BFD子程序库来分析多种目标文件格式的,BFD是David V. Henkel-Wallace、Rich Pixley、Steve Chamberlain和John Gilmore的一个合作项目。
共分享92篇相关文档