diff man/lispref/edebug.texi @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children 576fb035e263
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/lispref/edebug.texi	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,310 @@
+\input texinfo  @comment -*-texinfo-*-
+@comment %**start of header
+@setfilename ../info/edebug.info
+@settitle Edebug User Manual
+@comment %**end of header
+
+@comment ================================================================
+@comment This file has the same style as the XEmacs Lisp Reference Manual.
+@comment Run tex using version of `texinfo.tex' that comes with the elisp
+@comment manual. Also, run `makeinfo' rather than `texinfo-format-buffer'.
+@comment ================================================================
+
+@comment smallbook
+
+@comment tex
+@comment \overfullrule=0pt
+@comment end tex
+
+@comment
+@comment Combine indices.
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
+@syncodeindex pg cp
+@syncodeindex tp cp
+@comment texinfo-format-buffer no longer ignores synindex.
+@comment
+
+@ifinfo
+This file documents Edebug
+
+This is edition 1.6 of the Edebug User Manual
+for edebug Version 3.4,
+
+Copyright (C) 1991,1992,1993,1994 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+@end ifinfo
+@comment
+
+@comment
+@setchapternewpage odd
+
+@titlepage
+@title Edebug User Manual
+@subtitle A Source Level Debugger for XEmacs Lisp
+@subtitle Edition 1.6, February 1994
+
+@author by Daniel LaLiberte,  liberte@@cs.uiuc.edu
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1991,1992,1993,1994 Daniel LaLiberte
+
+@sp 2
+This is edition 1.6 of the @cite{Edebug User Manual}
+for edebug Version 3.4, February 1994
+
+
+@sp 2
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by this author.
+@end titlepage
+@page
+
+
+@node Top, Edebug, (dir), (dir)
+@chapter Edebug User Manual
+
+  Edebug is a source-level debugger for XEmacs Lisp programs.
+
+
+@menu
+* Edebug::			Edebug
+* Bugs and Todo List::		Bugs and Todo List
+* Index::			Index
+@end menu
+
+@c from included file:
+@c @node Edebug, Bugs and Todo List, Top, Top
+@c @section Edebug
+
+@include edebug-inc.texi
+
+
+@node Bugs and Todo List, Index, Edebug, Top
+@section Bugs and Todo List
+
+A debugger should be as bug free as possible, and I strive to achieve
+perfection.  But Edebug is fairly complex and I don't understand all of
+it any more, so bugs happen.  Please report anything suspicious to save
+someone else the trouble of finding the same bug.  Email to
+liberte@@cs.uiuc.edu.  There is also a mailing list for Edebug beta
+testers: edebug-request@@cs.uiuc.edu.
+
+@cindex bugs in Edebug
+If you want to run Edebug on Edebug itself, often it is easiest to first
+copy a reliable version of @file{edebug.el} into another file, say
+@file{fdebug.el}, and replace all strings @samp{edebug} with
+@samp{fdebug}, then evaluate the fdebug buffer and run Fdebug on
+the buggy Edebug.
+
+The following is a list of things I might do in the future, but often I
+do other things not on the list as I discover the need for them.  Send
+me your suggestions and priorities.
+
+@itemize @bullet
+
+@item
+Bug: I've noticed that the point of some buffers is reset to the point
+of some other buffer, but I haven't been able to repeat it so perhaps
+it is fixed.
+
+@item
+There may be a bug in the trace buffer display.  It should display as
+much as it can of the bottom of the buffer, but I think it scrolls off
+sometimes.
+
+There is a bug in window updating when there is both a trace buffer
+and an evaluation list - the source buffer doesn't get displayed.
+
+@item 
+Killing and reinserting an instrumented definition or parts of
+it leaves marks in the buffer which may confuse Edebug later.
+
+@item
+Design problem: The position of definitions with complex names (e.g.
+defmethod) cannot be remembered properly, but nor can the names of such
+definitions be determined from calls of them.
+
+@item
+After some errors, with @code{edebug-on-error} non-@code{nil}, continuing
+execution succeeds, returning @code{nil}.
+
+@item
+There are some interesting problems with defining or executing keyboard
+macros across the Edebug activation boundary.
+
+@item
+There are no other known bugs, so if you find any, please let me know.
+There is nothing worse than a buggy debugger!
+
+@item 
+I need to rethink locally binding @code{debug-on-error},
+@code{debug-on-quit}, and keyboard macro state variables.  Should we
+allow the global values to be changed by the user?
+
+@item
+"(" in the first column of doc strings messes up edebug reading.
+But no more than normal.
+
+@item
+There could be a command to return a value from the debugger -
+particularly useful for errors.
+
+@item
+Let me know if you find any side effects that could be avoided
+or at least documented in the manual.
+Also @pxref{The Outside Context}.
+
+@item
+@cindex selective display
+Make edebug work with selective display - don't stop in hidden lines.
+
+@item
+Debug just one or selected subexpressions of a definition - the rest is
+evalled normally.
+
+@item
+Should @code{overlay-arrow-position} and @code{-string} be buffer local?
+It would be better if they could be window-local.
+
+@item
+Use copy of @code{current-local-map} instead of @code{emacs-lisp-mode-map}
+(but only copy the first time after lower level command - to save time).
+
+@item
+Better integration with standard debug.
+
+@item
+Use @code{inhibit-quit} while edebugging?  
+
+@item
+Crawl mode would @code{sit-for} 0 or 1 in the outside window configuration
+between each edebug step.
+Maybe it should be a separate option that applies to trace as well.
+
+@item
+Customizable @code{sit-for} time.  Less than a second would be nice.
+
+@item
+Generalize step, trace, Trace-fast to one command with argument for
+@code{sit-for} time.
+Generalize go, continue, Continue-fast to another command with argument
+
+@item
+Counting conditions - stop after n iterations.  You can do it manually now
+with conditional breakpoints.
+
+@item
+Performance monitoring - summarize trace data.
+
+@item
+Preserve breakpoints across instrumenting.
+You can now install calls to @code{edebug} in your code.
+
+@item
+After stepping into code not previously instrumented (with
+@code{edebug-step-in}), maybe restore to non-instrumented code after
+entered.
+
+@item
+Optionally replace expressions with results in a separate buffer from
+the source code.  This idea is based on discussions with Carl Witty
+regarding his stepper debugger.  Also, unparse code into its own buffer
+if source code is not available, or if user wishes to use
+replace-with-results mode.
+
+@item
+Preserve previous bindings of local variables, and allow user to jump
+back to previous frames, particularly binding frames (i.e. @code{let},
+@code{condition-case}, function and macro calls) to view values at that
+frame.  What about buffer local variables?  It would be simpler to have
+access to the Lisp stack.
+
+Variables display, like the evaluation list but automatically display
+all local variables and values.
+
+@item
+Investigate minimal instrumentation that doesn't call edebug functions
+but instead sets edebug index and result variables.  Stepping is done
+through standard debugger features such as setting
+@code{debug-on-next-call}.  Breakpoints are done by modifying code as
+well as calling @code{backtrace-debug} for active frames.
+
+@item
+Edebugging of uninstrumented code.  Similar to above minimal
+instrumentation but find out where we are at each edebug call by looking
+in a map from each list form in the code to its position.
+Problem is symbols are not unique.
+
+@item
+Investigate hiding debugger internal stack frames.  This is both to
+simplify the standard debugger (which currently must be byte compiled to
+work) and to better support the integration of edebug and the standard
+debugger.
+
+@item
+Fix Emacs' lack of stack checking.  The current workaround of
+incrementing @code{max-lisp-eval-depth} and @code{max-specpdl-size} is
+unsafe.
+
+@item
+Although variables can't be tracked everywhere, watchpoints would be
+nice for variables that edebug can monitor.  That is, when the value of
+a specific variable changes, edebug would stop.  This can be done now
+with the @code{edebug-global-break-condition}, though it is awkward.
+
+@item
+How about a command to add the previous sexp (?) to the eval-list?
+
+@item
+Highlight all instrumented code, breakpoints, and subexpressions about
+to be evaluated or just evaluated.  This should be done in a way that
+works with Epoch, XEmacs, and Emacs 19.
+
+@end itemize
+
+
+@page
+@node Index,  , Bugs and Todo List, Top
+@section Index
+
+@printindex cp
+
+@comment To prevent the Concept Index's last page from being numbered "i".
+@page
+
+@contents
+@bye