- 论坛徽章:
- 0
|
1、gdb的主要功能
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、动态的改变你程序的执行环境。
2、使用简介
A、gdb是一个符号式命令行调试器,所谓“符号式”(symbolic),意思是在执行程序的时候可以使用变量名和函数名,就好像它是源代码中的名称一样,为了显示和翻译这些名称,调试器需要变量类型和函数类型的相关的信息,以及那几条机器指令对应到那几条源代码的信息,这类信息会以符号表的形式出现,当使用-g选项进行编译和链接是就会产生符号表,符号表被包含在可执行文件中。如 gcc -g filename;在包含多个源代码文件的大型程序中,必须在编译每个模块时都使用-g选项。
B、启动gdb : gdb ./(可执行文件)
C、实用参数解释
l : 显示源代码,一般默认是10行。如果继续使用该命令就会输出接下来的几行源代码。
b(break):设置断点
断点设置是随意的即可以是函数,也可以是某一行代码
(gdb) b func
Breakpoint 1 at 0x8048458: file hello.c, line 10.
(gdb) b 10
Breakpoint 1 at 0x80484ec: file shu.c, line 10.
r(run): 执行程序,一旦遇到断点就会中断程序的执行,并且显示接下来要执行的的语句。此时我们希望一步一步的执行此函数,通常可以用next(n)和step(s)命令来实现。
这两个命令的区别在于当遇到函数调用时,都会执行一整行代码,包含整个函数的调用,然停留在下一行,而step命令不一样,如果此函数有符号表的话,就会 跳进函数内,在函数内的第一条语句处中断。
p(print): 使用该命令显示某个表达式的值
c(continue):让程序可以继续执行,直到遇到下一个断点或程序的尾端。
q(quit): 停止执行调试器,即使被调试程序仍在执行中。
finish .一直运行到函数返回
until、运行到某一行
D、gdb命令的使用
gdb的命令很多,gdb把之分成许多个种类。help命令只是例出gdb的命令种类,如果要看种类中的命令,可以使用help 命令,如:help breakpoints,查看设置断点的所有命令。也可以直接help 来查看命令的帮助。
gdb中,输入命令时,可以不用打全命令,只用打命令的前几个字符就可以了,当然,命令的前几个字符应该要标志着一个唯一的命令,在Linux下,你可以敲击两次TAB键来补齐命令的全称,如果有重复的,那么gdb会把其例出来。
1、敲入b按两次TAB键,你会看到所有b打头的命令:(即可以通过命令的首字母来查找命令)
(gdb) b
backtrace break bt
2、只记得函数的前缀,可以这样:
(gdb) b make_
(再按下一次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开头的函数全部例出来给你查看。
3、调试C++的程序时,有可以函数名一样。如:
(gdb) b 'bubble( M-?
bubble(double,double) bubble(int,int)
(gdb) b 'bubble(
你可以查看到C++中的所有的重载函数及参数。(注:M-?和“按两次TAB键”是一个意思)
E、GDB中运行UNIX的shell程序(不懂)
在gdb环境中,你可以执行UNIX的shell的命令,使用gdb的shell命令来完成:
shell
调用UNIX的shell来执行,环境变量SHELL中定义的UNIX的shell将会被用来执行,如果SHELL没有定义,那就使用UNIX的标准shell:/bin/sh。(在Windows中使用Command.com或cmd.exe)
还有一个gdb命令是make:
make
可以在gdb中执行make命令来重新build自己的程序。这个命令等价于“shell make ”。
F、GDB中运行程序
当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件。如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。
在gdb中,运行程序使用r或是run命令。程序的运行,你有可能需要设置下面四方面的事。
1、程序运行参数。
&nb
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104227/showart_2104884.html |
|