云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > gdb手册

gdb手册

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 11:05:07

2.3 Shell命令

要在调试会话中需要执行一个应时的shell命令,是不需要离开或挂起GDB的;只需使用“shell”命令即可。

shell command string

调用标准shell,执行command string。倘若有环境变量SHELL,那么它就决定应该运行哪个shell。否则,GDB就使用默认的shell(UNIX系统是/bin/sh,MS-DOS是COMMAND.COM,等等)。

make工具一般是开发环境所需要的。最好不要在GDB中使用它。

make make-args

以指定的参数执行make程序。等同于“shell make make-args”。

2.4 Loging输出

你可能希望将GDB的命令输出保存到一个文件中去。这里有几个指令控制GDB的Loging。

set logging on

开启logging。 set logging off

关闭logging。 set logging file file

更改当前logfile的名字。默认的logfile是“gdb.txt”。 set logging overwrite [on|off]

通常,GDB是追加logfile。如果设置overwrite为on的话,GDB覆盖logfile。 set logging redirect [on|off]

通常,GDB同时向终端和logfile输出。要是想让GDB只输入到logfile,就设置redirect为on。 show logging

显示当前的logging设置值。

3.GDB命令

可以使用命令名的头几个字母简写GDB的命令,只要这个简写不会产生二义性;还以通过键入RET重复某些命令。也可用利用TAB键,让GDB自己填写命令单词中剩余的部分(或者是可用的备选方案,只要有多于1个的可能性)。

3.1命令语法 3.2命令完成 3.3获得帮助

如果向GDB寻求帮助。 如何给GDB下命令

3.1命令语法

一个GDB命令是一个单行输入,对于长度没有限制。以命令名开始,后跟一些参数,这些参数的意义取决于命令名。例如,step命令,它接受一个表明步进次数的参数,如在“step 5”中。step命令也可以不带参数。有些命令根本就不允许有参数。

GDB的命令总是可以被缩短的,只要这个简写不会产生二义性。其他可能的命令简写都已被列在个专用令文档中了。在某些情况下,甚至二义性的简写也是被允许的;例如:s就是被特别定义为等同于step的,即使还有其他的一些名字以s开头的命令。可以把它们作为help命令的参数来测试一个简写命令。向GDB输入一个空白行(仅键入RET)意味着重复先前的命令。这种方法是不能重复某些命令的(比如run)。有些命令,不小心的重复可能会导致一些问题,况且你也不太可能要重复。自定义命令可以关闭这一特性,见禁止重复一节。

list和x命令,当你使用RET重复它们时,构造新的参数,而不是原来的。这允许轻松地扫描源代码或内存。

GDB也可以以另外一种方式使用RET:以一种类似通用工具more的方式,分屏冗长的输出(见屏幕尺寸一章)。由于在这种情形下,按一次RET后容易产生太多的重复,因此,GDB在任何能够产生那种显示的命令以后都关闭了命令重复。

任何从一个#到行尾的文本都是一个注释;它什么也不做;它主要用在命令文件中(见命令文件一章)。

C-o组合有重复一个复杂命令序列的作用。这个命令接受当前行,如同RET,然后从编

辑历史记录中读取与当前行相关的下一行。

3.2命令完成

如果只有一种可能性的话,GDB可以为你填写命令单词中剩余的部分;也可以把所有有效的可能性的命令单词显示给你,而且任何时候都可以。这个功能对GDB命令,GDB子命令以及程序中的符号名起作用。

只要你想让GDB填写一个词的剩余的部分,按TAB键即可。如果只有一种可能性,GDB在填写完后就等待你去完成这个命令(或者说按RET输入它)。例如,如果你键入:

(gdb) info bre TAB

GDB填写“breakpoints”单词的剩余部分,因为info的子命令以bre开头的只有它:

(gdb) info breakpoints

既可以在这个位置按下RET运行这个info breakpoints命令,也可以按下控各,输入其他的东西,如果“info breakpoints”不是你所期待的命令的话(如果“info breakpoints”确实就是你想要的,还是在“info bre”后立即按下RET为好,与其使用命令完成,还不如使用命令缩写)。

当你按TAB时,如果对于下一个单词有多于一个的可能性的话,GDB会发出一个蜂鸣。你既可以补充更多的字母然后重试,也可以在按一下TAB,GDB显示对于那个单词的所有可能的完成。例如,你可能想在一个名字以“make_”开头的子程序中设置一个断点,可是当你键入b make_TAB时,GDB只是发出了一个蜂鸣。再按一次TAB,显示出程序中所有以这些字母开头的子程序名。

(gdb) b make_ TAB

GDB发出蜂鸣;再按一次TAB,看到:

make_a_section_from_file make_environ

make_abs_section make_function_type

make_blockvector make_pointer_type make_cleanup make_reference_type

make_command make_symbol_completion_list (gdb) b make_

显示完可用的可能性后,GDB复制你的部分输入(例子中是“b make_”),便于你完成命令。

如果先前你只是想看一下备选方案列表,与其按TAB两次,还不如按M-?。M-?意思是META ?。即可以通过按住键盘上代表META的键(如果有,译者注:在PC上一般是ALT),再按下?输入,也可以按住ESC后再按?输入。

有些时候,你需要的字符串,虽然逻辑上是一个“词”,但可能包含圆括号或者是其他的字符,被GDB正常地从它的词的概念上排除了。为了“词完成”可以在这种情况下工作,可以在GDB命令中用’(单引号)把这些词包围起来。

这最适合在键入C++函数名时使用这一功能。这是因为C++允许函数重载(相同的函数有多个定义,以参数类型来区分)。例如,当你想要设置一个断点时,你可能需要区分是否是你想要的那个带有一个int型参数的name版本name(int),还是另外一个带有一个float型参数的name版本name(float)。为了在这种情况下使用“词完成”功能。在函数名的开头敲一个单引号’。这通知GDB,当按下TAB或M-?请求“词完成”时,需要考虑比平时要多的信息。

(gdb) b 'bubble( M-?

bubble(double,double) bubble(int,int) (gdb) b 'bubble(

在某些情况下,GDB能够知道正完成的名字需要使用引号。当这发生时,如果你先前没有输入引号,GDB会为你插入引号(尽其所能地)。

(gdb) b bub TAB

GDB通知你,你的输入行变成下面这样,并发出蜂鸣:

(gdb) b 'bubble(

搜索更多关于: gdb手册 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

2.3 Shell命令 要在调试会话中需要执行一个应时的shell命令,是不需要离开或挂起GDB的;只需使用“shell”命令即可。 shell command string 调用标准shell,执行command string。倘若有环境变量SHELL,那么它就决定应该运行哪个shell。否则,GDB就使用默认的shell(UNIX系统是/bin/sh,MS-DOS是COMMAND.COM,等等)。 make工具一般是开发环境所需要的。最好不要在GDB中使用它。 make make-args 以指定的参数执行make程序。等同于“shell make make-args”。 2.4 Loging输出 你可能希望将GDB的命令输出保存到一个文件中去。这里

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com