Anders Lindgren and I (but mostly Anders) has been revamping debugging
support via GNU Emacs along the lines of the newer gdb debugging in
Emacs 22 (gdb-ui.el). For each debug session there are several
internal buffers which are constantly updated and contain information
about the current state. For example a buffer contains stack
information, another the breakpoint information, another display
expressions, and so on. These are called "secondary buffers".

Because screen real-estate is limited, some of these buffers may be
visible in a frame and some not. There are commands to switch to these
buffers moving to the visible frame if the buffer is visible, or
replacing the secondary buffer that the command was issued from with
the desired secondary buffer.

The question has come up regarding key bindings and this is where I'd
like to solicit comments. In various IDE's like Eclipse, netbeans or
Visual Studio, the function key (e.g F5) issue debugger commands.
There can be variable to indicate which flavor of key bindings one
wants.

Some secondary buffers may have specific commands applicable. Right
now however there are very few of these, and many of these could be
construed applicable even if you aren't in that buffer. For example,
one might want frame-moving commands like "up" to be conveniently
available even outside the stack buffer.

One proposal is to have the capital letter move between secondary
buffers as mentioned above (jump to if visible or replace a secondary
if not).

 SPACE  step (edebug compatible)
  <  up    (Gud uses this and Emacs uses M-< for beginning of buffer)
  >  down  (Gud uses this and Emacs uses M-> for beginning of buffer)
  ?  help
  B  goto/display breakpoints buffer
  C  goto/display command buffer
  D  goto/display display
  O  goto/display program output
  S  goto/display source window
  T  goto/display stack-buffer (Perl uses T for stack trace)
  V  goto/display variables buffer
  b  set breakpoint (edebug compatible)
  c  continue  (edebug compatible)
  d  remove break
  f  finish
  n  next  (edebug compatible)
  p  print
  q  quit (edebug compatible)
  r  restart
  s  step
  u  unset breakpoint  (edebug compatible)
  x  temporary breakpoint (edebug compatible)

Buffer specific commands
  Stack buffer
  return: set frame at this position

  variables buffer
  return: edit the variable's value

  breakpoints:
  return toggle breakpoint (enable/disable it)