Hi, all... How do you folks debug GDB under GDB? I have a truly evil (mwahahah) library that inserts breakpoints into the program that calls it. The intent is to self-modify the code to conform to a different ABI than the original, as if adding before-advice and after-advice to functions in a binary executable. I also hope to have an offline translator, but the just-in-time translator has more information at its disposal, which is why I'm focusing on it as a proof-of-concept. So, my problem is that I need to install a handler for SIGTRAP, which interacts badly with GDB 6.4.90-debian on my Ubuntu i386 system. It works fine if I manually resend the SIGTRAP: (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y `/fig/home/michael/sw/libstackless/t' has changed; re-reading symbols. Breakpoint 1 at 0x8048891: file t.c, line 48. Starting program: /fig/home/michael/sw/libstackless/t Program received signal SIGTRAP, Trace/breakpoint trap. 0x080485d1 in stackless_premain (argc=-1075263868, argv=0xbfe8c4b4) at t.c:117 (gdb) signal SIGTRAP Continuing with signal SIGTRAP. from breakpoint at 0x080485d1 Breakpoint 1, stackless_trap_activation (signum=5, si=0x804bc9c, uctx=0x804bd1c) at t.c:50 (gdb) c Continuing. Hello, world! Program exited normally. (gdb) However, when I change the handling of SIGTRAP to do this automatically, my program dies: (gdb) handle SIGTRAP pass SIGTRAP is used by the debugger. Are you sure you want to change it? (y or n) y Signal Stop Print Pass to program Description SIGTRAP Yes Yes Yes Trace/breakpoint trap (gdb) r Starting program: /fig/home/michael/sw/libstackless/t Program terminated with signal SIGTRAP, Trace/breakpoint trap. The program no longer exists. (gdb) The program is attached below. Is there a better way to do this that I'm missing, or is this a GDB bug that can be fixed (or has already been fixed in a newer version)? Thanks, -- Michael FIG /\//\ http://fig.org/michael/ \//\/