Updated to use Bochs 2.6.11
[pintos-anon] / doc / devel.texi
index 20af12f69b419bdb5ce8df583dc707d995a45cef..588f1857474ca5b109d4f63b543b968c64ff2e36 100644 (file)
@@ -1,12 +1,23 @@
-@node Development Tools, , Debugging Tools, Top
+@node Development Tools
 @appendix Development Tools
 
 Here are some tools that you might find useful while developing code.
 
 @menu
 @appendix Development Tools
 
 Here are some tools that you might find useful while developing code.
 
 @menu
-* Tags::                        
-* CVS::                         
-* VNC::                         
+* Tags::
+* cscope::
+@ifset recommendcvs
+* CVS::
+@end ifset
+@ifset recommendgit
+* Git::
+@end ifset
+@ifset recommendvnc
+* VNC::
+@end ifset 
+@ifset recommendcygwin
+* Cygwin::
+@end ifset
 @end menu
 
 @node Tags
 @end menu
 
 @node Tags
@@ -22,9 +33,50 @@ In Emacs, use @kbd{M-.} to follow a tag in the current window,
 @kbd{C-x 4 .} in a new window, or @kbd{C-x 5 .} in a new frame.  If
 your cursor is on a symbol name for any of those commands, it becomes
 the default target.  If a tag name has multiple definitions, @kbd{M-0
 @kbd{C-x 4 .} in a new window, or @kbd{C-x 5 .} in a new frame.  If
 your cursor is on a symbol name for any of those commands, it becomes
 the default target.  If a tag name has multiple definitions, @kbd{M-0
-M-.} will jump to the next one.  To jump back to where you were before
+M-.} jumps to the next one.  To jump back to where you were before
 you followed the last tag, use @kbd{M-*}.
 
 you followed the last tag, use @kbd{M-*}.
 
+@node cscope
+@section cscope
+
+The @command{cscope} program also provides an index to functions and
+variables declared in a program.  It has some features that tag
+facilities lack.  Most notably, it can find all the points in a
+program at which a given function is called.
+
+The @file{Makefile} in @file{pintos/src} produces @command{cscope}
+indexes when it is invoked as @code{make cscope}.  Once the index has
+been generated, run @command{cscope} from a shell command line; no
+command-line arguments are normally necessary.  Then use the arrow
+keys to choose one of the search criteria listed near the bottom of
+the terminal, type in an identifier, and hit @key{Enter}.
+@command{cscope} will then display the matches in the upper part of
+the terminal.  You may use the arrow keys to choose a particular
+match; if you then hit @key{Enter}, @command{cscope} will invoke the
+default system editor@footnote{This is typically @command{vi}.  To
+exit @command{vi}, type @kbd{: q @key{Enter}}.} and position the
+cursor on that match.  To start a new search, type @key{Tab}.  To exit
+@command{cscope}, type @kbd{Ctrl-d}.
+
+Emacs and some versions of @command{vi} have their own interfaces to
+@command{cscope}.  For information on how to use these interface,
+visit @url{http://cscope.sourceforge.net, the @command{cscope} home
+page}.
+
+@ifset recommendgit
+@node Git
+@section Git
+
+It's crucial that you use a source code control system to manage your
+Pintos code. This will allow you to keep track of your changes
+and coordinate changes made by different people in the project. For this
+class we recommend that you use Git; if you followed the instructions on
+getting started, a Git repository will already have been created for you.
+If you don't already know how to use Git, we recommend that you read
+the @uref{http://git-scm.com/book, , Pro Git} book online.
+@end ifset
+
+@ifset recommendcvs
 @node CVS
 @section CVS
 
 @node CVS
 @section CVS
 
@@ -37,14 +89,17 @@ version.  Furthermore, you can retrieve any old version of your code
 as of some given day and time.  The version control logs tell you who
 made changes and when.
 
 as of some given day and time.  The version control logs tell you who
 made changes and when.
 
-CVS is not the best version control system out there.  However, it's
-free, it's ubiquitous, and it's fairly easy to use.  More to the
-point, it's already available on the Leland machines you're using for
-the projects.
+CVS is not the best version control system out there, but it's
+free, it's fairly easy to use, and it's already installed in most
+Unix-like environments.
 
 For more information, visit the @uref{https://www.cvshome.org/, , CVS
 home page}.
 
 
 For more information, visit the @uref{https://www.cvshome.org/, , CVS
 home page}.
 
+@include localcvsinstructions.texi
+@end ifset
+
+@ifset recommendvnc
 @node VNC
 @section VNC
 
 @node VNC
 @section VNC
 
@@ -52,6 +107,22 @@ VNC stands for Virtual Network Computing.  It is, in essence, a remote
 display system which allows you to view a computing ``desktop''
 environment not only on the machine where it is running, but from
 anywhere on the Internet and from a wide variety of machine
 display system which allows you to view a computing ``desktop''
 environment not only on the machine where it is running, but from
 anywhere on the Internet and from a wide variety of machine
-architectures.  It is already installed on the Leland machines.  For
-more information, look at the @uref{http://www.realvnc.com/, , VNC
+architectures.  It is already installed on the lab machines.  
+For more information, look at the @uref{http://www.realvnc.com/, , VNC
 Home Page}.
 Home Page}.
+@end ifset
+
+@ifset recommendcygwin
+@node Cygwin
+@section Cygwin
+
+@uref{http://cygwin.com/, ,Cygwin} provides a Linux-compatible environment
+for Windows.  It includes ssh client and an X11 server, Cygwin/X.  If your
+primary work environment is Windows, you will find Cygwin/X extremely
+useful for these projects.  Install Cygwin/X, then start the X server
+and open a new xterm.  The X11 server also allows you to run pintos while
+displaying the bochs- or qemu-emulated console on your Windows desktop.
+@end ifset
+
+@localdevelopmenttools{}
+