? 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
 
