Date: Thu, 17 Feb 1994 09:27:59 +0100 From: terra AT diku DOT dk To: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: Full Screen Debugger available Hi! I have uploaded the file fsdb090.zip to omnigate.clarkson.edu:/pub/msdos/djgpp/pub It is version 0.90 (beta) of my new full screen debugger inspired by Borland's Turbo Debugger. It is distributed as the changed and new source files to djgpp's default debugger; you must compile it yourself. Don't forget to backup your copy of "ed" before you install this. Have fun! Morten Welinder terra AT diku DOT dk The manual... ------------------------------------------------------------------------- Sally Full Screen Debugger version 0,90 beta ------------------------------------------------------------------------- This is a quick-and-dirty manual for the Sally Full Screen Debugger, a new user interface to the old djgpp debugger. The interface was inspired by Turbo Debugger, the very best debugger that I have ever seen. Too bad it doesn't work for 32 bit programs. The debugger has been tested under the following conditions only, but I expect no problems in other environments except as noted below: * Cpu: 486 (i.e., with fpu) * Colour Vga screen, text mode. * Vcpi mode of the extender. I think it will work on a mono screen also, but I'm not sure. It seems to be working with 43 or 50 lines displays, but this is not fully tested. Graphics mode does not work -- a little work in get_screen() and put_screen() could fix that, but it might be slow. I expect no problems when used with the 387 emulator, but without that or a fpu you should not call up the npx window. Finally, I don't know about Dpmi. I have no problems with speed, even on large programs like Gnu Emacs, but some of the redisplay routines are greedy. A few caches might help, but I don't feel like doing it right now. Yet to do, but did not feel like it right now: * Alt-S to swap in the source in place of the disassembly. * Alt-M to swap in a memory status display somewhere. * Handle screen mode switch gracefully. * Handle graphics modes. * Entry of strings or multiple bytes in the data pane. * Display of data in different formats. * More than three breakpoints by patching with `Int 3'. * F4/F8/F9 should step over breakpoint at cursor like F7 does. * Conditional breakpoints. * Breakpoint on data change, or port i/o. * Improve precision of npx manipulations. * Enhance expression evaluator. * Debug logs. * Restart capability. * On-line help. * Ctrl-Break catch. Some keys have been assigned aliases; these aliases are not shown in the key descriptions here. Global Keys: ----------- The following keys are defined no matter where the current focus is pointed at. Tab Goto next pane (clockwise). BackTab Goto previous pane. Alt-C Replace npx pane with code pane. Alt-N Replace code pane with npx pane. Alt-X Exit. Alt-F5 Show user program screen. F7 Single step program. F8 Single step program, but step over calls. F9 Run or continue program. Code Pane Keys: -------------- Up One instruction backwards (only 99% perfect). Down One instruction forwards. PgUp A screenful of instructions backwards. PgDn A screenful of instructions forwards. Ctrl-Left Start instruction display one byte before. Ctrl-Right Start instruction display one byte later. Ctrl-G Goto specified address. Ctrl-N Set eip to instruction under cursor -- careful! Ctrl-O Goto current eip. F2 Set/reset breakpoint. Only three can be set at any time. F4 Set temporary breakpoint at cursor and run. Register Pane Keys: ------------------ Up/Down What you expect. Other Enter new value for register. Flag Pane Keys: -------------- Up/Down What you expect. Space Toggle flag. S Set flags. R Reset flag. Breakpoint Pane Keys: -------------------- Up/Down What you expect. Delete Reset breakpoint. Return Go to breakpoint. Data Pane Keys: -------------- Up/Down What you expect. Left/Right What you expect. PgUp/PgDn What you expect. Ctrl-G Goto specified address. Other Enter new byte value. Npx Pane Keys: ------------- Up/Down What you expect. Ctrl-C Clear register. Ctrl-Z Zero register. Ctrl-N Negate register. Other Enter new value for register.