GDB 主要做的四件事:
1>设置运行环境和参数运行指定程序
2>让程序在指定的条件下停止
3>当程序停止时检查发生了什么
4>改变成在调试程序,这样可以试着在线修正某bug引起问题,然后继续查找另个bug.
% GDB在启动时,参数-quiet或-q,即命令gdb -q,可以在安静模式下启动,这样,启动时不会显示那些像广告似的说明。
%GDB在启动时,参数-nx或-n 指定不执行任何初始化文件中命令(一般为.gdbinit)。
%GDB在启动时,参数-batch 批处模式,当在命令文件中所有命令被成功执行后,GDB返回状态“0”,如果出错,返回非零值。
%GDB在启动时,参数-cd DIRECTORY 把DIRECTORY作为GDB工作目录,而非当前目录(缺省);
%命令help,不加任何参数。
%help+命令列表 得到命令列表中的帮助。
% set 为程序设置运行环境
% show version 显示GDB版本
% show copying 显示版权信息
% show warranty 显示警告信息
% show paths 显示当前路径变量设置情况。
% set environment VARNAME VALUE设置某环境变量的值。
% unset environment VARNAME 删除某环境变量的值。
%run >outfile 运行程序并把程序标准输出写入文件outfile中。
% tty /dev/ttyb 指定以后用run 命令启动的进程使用终端/dev/ttyb作为程序的输入/输出,而且把这个终端设置为进程的控制终端。 只对当前调试程序有效。
% attach PROCESS-ID 把已经运行的进程(在GDB外启动)连接入GDB以便调试。 PROCESS-ID为进程号
%kill 结束子进程
%info program 显示当前程序运行的状态信息。
% break FUNCTION 在某个函数上设置断点。
% break +OFFSET或 -OFFSET 在当前程序运行到的前几行或后几行设置断点。OFFSET为行号。
% break LINENUM 在行号为LINENUM行上设置断点。程序在此行前停止运行。
% break FILENAME:LINENUM 在文件名为FILENAME的原文件的第LINENUM行设置断点
% break FILENAME:FUNCTION 在文件FILENAME的FUNCTION函数上设置断点。
% break *ADDRESS 在地址ADDRESS 上设置断点。
% break 没有参数时,在当前执行到程序运行杙中的下一条指令上设置断点。
% break ... if CON 设置一个条件断点,条件由COND指定。当COND值为非零时,程序在断点处停止。
% tbreak ARGS 设置断点只有一次有效。
% hbreak ARGS 设置一个由硬件支持的断点。
% thbreak ARGS 设置只有一次作用的硬件支持断点。
% rbreak REGEX 在所有满足表达示REGEX的函数上设置断点。
% 显示所有断点和观察点:
info breakpoints 或 info break 或 info watchpoints
% watch EXPR 使用EXPR作为表达式设置一个观察点。当表达式值被改变时GDB使程序停止。
% rwatch EXPR 设置一观察点,当EXPR被程序读时,程序被暂停。
% awatch 设置一观察点,当EXPR被读出然后被写入时程序被暂停。
% catch EXCEPTIONS 在一个被激活的异常处理句柄中设置断点。
% clear 在当前选择的杙帧上清除下一个所要执行到的断点。
% clear FUNCTION 或 clear FILENAME:FUNCTION 删除名为FUNCTION的函数上断点
% clear LINENUM 或 clear FILENAME:LINENUM 删除以LINENUM为行号上的断点
% delete 删除参数所指定断点,如果没有参数则删除程序中所有断点。
% info break 或 info watch 查看哪些断点是活跃的。
% 断点或观察点四种状态:
1,激活
2,不激活
3,激活一次变为不激活。
4,激活一次自动删除。
% enable 激活出参数指定的断点或全部断点(没有参数时)。
% enable once BNUMS 使BNUMS断点只激活一次。
% enable delete BNUMS ... 激活一次,然后自动删除。
% condition BNUM EXPRESSION 把EXPRESSION 作为断点条件,断点用BUN指定。只有在条件为真时程序才被暂停。
% condition BUN 删除在BNUM号断点处的条件,使成为一普通断点。
% ignore BNUM CONUT 设置第BNUM号断点的ignore参数为COUNT.
% 为任一个断点指定一系列命令,当程序执行到断点时,GDB自动执行这些命令。
commands
... COMMAND-LIST...
end
EXAMPLE:
break foo if x>0
commands
printf "x is %d\n",x
cont
end
cont使程序继续。。
5.10.2010 夜
转载于:https://blog.51cto.com/conflee/313717