? sig.diff ? t.py ? thread_script2.py ? tpdb.py ? tpdb2.py ? pydb/.gdb.py.in.swp ? pydb/sighandler.py Index: pydb/gdb.py.in =================================================================== RCS file: /cvsroot/bashdb/pydb/pydb/gdb.py.in,v retrieving revision 1.49 diff -u -r1.49 gdb.py.in --- pydb/gdb.py.in 29 Jul 2006 08:09:32 -0000 1.49 +++ pydb/gdb.py.in 30 Jul 2006 23:17:40 -0000 @@ -21,6 +21,8 @@ from pydbcmd import Cmd from pydbbdb import Bdb +from sighandler import SigHandler + class Restart(Exception): """Causes a debugger to be restarted for the debugged Python program.""" pass @@ -37,6 +39,9 @@ self._re_linetrace_delay = re.compile(r'\s*linetrace\s+delay') self._wait_for_mainpyfile = False + # set up signal handling + self._sig_handler = SigHandler(self) + self.__init_info() self.__init_set() self.__init_show() @@ -236,10 +241,12 @@ self.infocmds.add('args', self.info_args) self.infocmds.add('breakpoints', self.info_breakpoints) self.infocmds.add('display', self.info_display) + self.infocmds.add('handle', self._sig_handler.info_signal) self.infocmds.add('globals', self.info_globals, 1, False) self.infocmds.add('line', self.info_line) self.infocmds.add('locals', self.info_locals, 1, False) self.infocmds.add('program', self.info_program) + self.infocmds.add('signal', self._sig_handler.info_signal) self.infocmds.add('source', self.info_source) def __init_set(self): @@ -1043,6 +1050,19 @@ else: self.__adjust_frame(pos=arg, absolute_pos=True) + def do_handle(self, arg): + """Specify how to handle a signal. + Args are signals and actions to apply to those signals. + Recognized actions include "stop", "nostop", "print", "noprint", + "pass", "nopass", "ignore", or "noignore". + Stop means reenter debugger if this signal happens (implies print). + Print means print a message if this signal happens. + Pass means let program see this signal; otherwise program doesn't know. + Ignore is a synonym for nopass and noignore is a synonym for pass. + Pass and Stop may be combined. + """ + self._sig_handler.action(arg) + def do_ignore(self,arg): """ignore bpnumber count