快速业务通道

Linux下编程工具的使用(5) - GDB调试工具(1)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-30
arranty" for details.
This GDB was configured as "x86_64-linux-gnu".

(gdb) help
List of classes of commands:

aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
data -- Examining data
files -- Specifying and examining files
internals -- Maintenance commands
obscure -- Obscure features
running -- Running the program
stack -- Examining the stack
status -- Status inquiries
support -- Support facilities
tracepoints -- Tracing of program execution without stopping the program
user-defined -- User-defined commands

Type "help" followed by a class name for a list of commands in that class.
Type "help all" for the list of all commands.
Type "help" followed by command name for full documentation.
Type "apropos word" to search for commands related to "word".
Command name abbreviations are allowed if unambiguous.
(gdb)


gdb 的命令很多, gdb 把之分成许多个种类. help 命令只是例出 gdb 的命令种类,如果要看种类中的命令,可以使用 help <class> 命令,如: help breakpoints ,查看设置断点的所有命令.也可以直接 help <command> 来查看命令的帮助.


gdb 中,输入命令时,可以不用打全命令,只用打命令的前几个字符就可以了,当然,命令的前几个字符应该要标志着一个唯一的命令,在 Linux 下,你可以敲击两次 TAB 键来补齐命令的全称,如果有重复的,那么 gdb 会把其例出来.


示例一:在进入函数 func 时,设置一个断点.可以敲入 break func ,或是直接就是 b func
(gdb) b func
Breakpoint 1 at 0x8048458: file hello.c, line 10.


示例二:敲入 b 按两次 TAB 键,你会看到所有 b 打头的命令:
(gdb) b
backtrace break bt
(gdb)


示例三:只记得函数的前缀,可以这样:
(gdb) b make_ < 按 TAB 键 >
(再按下一次 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 把所有 make 开头的函数全部例出来给你查看.


示例四:调试 C 的程序时,有可以函数名一样.如:
(gdb) b ''bubble( M-?
bubble(double,double) bubble(int,int)
(gdb) b ''bubble(
你可以查看到 C 中的所有的重载函数及参数.(注: M-? 和“按两次 TAB 键”是一个意思)


要退出 gdb 时,只用发 quit 或命令简称 q 就行了.
GDB 中运行*NIX 的shell 程序
在 gdb 环境中,你可以执行 *NIX 的 shell 的命令,使用 gdb 的 shell 命令来完成:


shell <command string>


调用 *nux 的 shell 来执行 <command string> ,环境变量 SHELL 中定义的 *NIX 的 shell 将会被用来执行 <command string> ,如果 SHELL 没有定义,那就使用 *NIX 的标准 shell : /bin/sh .(在 Windows 中使用 Command.com 或 cmd.exe )

(gdb) disassemble func
Dump of assembler code for function func:
0x8048450 <func>: push

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号