GDB调试一
catchpoints
catch event 生成一个断点,当event发生时,中断程序。
event可以是以下命令之一:
-
throw [regexp]
rethrow [regexp]
catch [regexp]
当异常名与正则表达式regexp匹配时,中断程序。 -
exec
当调用exec家族函数时,中断程序 -
fork
当调用fork函数时,中断程序 -
vfork
当调用vfork函数时,中断程序 -
load [regexp]
unload [regexp]
装载或者卸载一个库时,中断程序 -
signal [signal…|‘all’]
signal不带参数,将捕获所有GDB内部没用到的信号,特别是除了’SIGTRAP’和’SIGINT’之外的信号。
all参数,所有的信号都会被捕获。
或者后接指定一系列需要捕获的信号。输入catch signal后按TAB键可以列出所有的信号。 -
syscall [name | number | group:groupname | g:groupname]
如果只有syscall,则捕捉所有的系统调用。
name – 系统调用的名字。 /usr/include/asm/unistd.h目录下有全部的系统调用
number – 系统调用号,如果GDB的database出现问题,导致使用name的方式无效,则可以使用number参数。
group:groupname/g:groupname,例如group:network捕捉网络相关的系统调用。输入catch syscall g:后按TAB键后会列出所有可用的groupname
tcatch event 同catch event,只停止一次,随后自动被删除。