一、
1. 查看源代码:list [函数名][行数]
2. 设置程序运行参数:set args
二、暂停程序
1. continue、next、step
2. 设置断点:
a、break + [源代码行号][源代码函数名][内存地址]
b、break ... if condition ...可以是上述任一参数,condition
条件。例如在循环体中可以设置break ... if i = 100 来设置循环次数。
c、delete disable enable
3. 设置观察点:
a、watch + [变量][表达式] 当变量或表达式值改变时即停住程序。
b、rwatch + [变量][表达式] 当变量或表达式被读时,停住程序。
c、awatch + [变量][表达式] 当变量或表达式被读或被写时,停住程序。
4. 设置捕捉点:
catch + event 当event发生时,停住程序。event可以是下面的内容:
1)、throw 一个C++抛出的异常。(throw为关键字)
2)、catch 一个C++捕捉到的异常。(catch为关键字)
3)、exec 调用系统调用exec时。(exec为关键字,目前此功能只在HP-UX下有用)
4)、fork 调用系统调用fork时。(fork为关键字,目前此功能只在HP-UX下有用)
5)、vfork 调用系统调用vfork时。(vfork为关键字,目前此功能只在HP-UX下有用)
6)、load 或 load 载入共享库(动态链接库)时。(load为关键字,
目前此功能只在HP-UX下有用)
7)、unload 或 unload 卸载共享库(动态链接库)时。(unload为关
键字,目前此功能只在HP-UX下有用)
5. 捉信号:
handle + [argu] + signals
signals:是Linux/Unix定义的信号,SIGINT表示中断字符信号,也就是
Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改
变信号; SIGKILL表示终止程序运行的信号,等等。
argu:
nostop 当被调试的程序收到信号时,GDB不会停住程序的运行,但
会打出消息告诉你收到这种信号。
stop 当被调试的程序收到信号时,GDB会停住你的程序。
print 当被调试的程序收到信号时,GDB会显示出一条信息。
noprint 当被调试的程序收到信号时,GDB不会告诉你收到信号的信息。
pass or noignore 当被调试的程序收到信号时,GDB不处理信号。
这表示,GDB会把这个信号交给被调试程序会处理。
nopass or ignore 当被调试的程序收到信号时,GDB不会让被调
试程序来处理这个信号。
6. 线程中断:
break [linespec] thread [threadno] [if ...]
linespec 断点设置所在的源代码的行号。如: test.c:12表示文件为
test.c中的第12行设置一个断点。
threadno 线程的ID。是GDB分配的,通过输入info threads来查看正在
运行中程序的线程信息。
if ... 设置中断条件。
三、查看信息 info
1、查看数据
print variable 查看变量
print *array@len 查看数组(array是数组指针,len是需要数据长度)
可以通过添加参数来设置输出格式:
/x 按十六进制格式显示变量。
/d 按十进制格式显示变量。