109 lines
4.0 KiB
Plaintext
109 lines
4.0 KiB
Plaintext
@node Development Tools
|
|
@appendix Development Tools
|
|
|
|
Here are some tools that you might find useful while developing code.
|
|
|
|
@menu
|
|
* Tags::
|
|
* cscope::
|
|
* Git::
|
|
@ifset recommendvnc
|
|
* VNC::
|
|
@end ifset
|
|
@ifset recommendcygwin
|
|
* Cygwin::
|
|
@end ifset
|
|
@end menu
|
|
|
|
@node Tags
|
|
@section Tags
|
|
|
|
Tags are an index to the functions and global variables declared in a
|
|
program. Many editors, including Emacs and @command{vi}, can use
|
|
them. The @file{Makefile} in @file{pintos-ic/src} produces Emacs-style
|
|
tags with the command @code{make TAGS} or @command{vi}-style tags with
|
|
@code{make tags}.
|
|
|
|
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
|
|
M-.} jumps to the next one. To jump back to where you were before
|
|
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-ic/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}.
|
|
|
|
@node Git
|
|
@section Git
|
|
|
|
Git is a version-control system. That is, you can use it to keep
|
|
track of multiple versions of files. The idea is that you do some
|
|
work on your code and test it, then commit it into the version-control
|
|
system. If you decide that the work you've done since your last
|
|
commit is no good, you can easily revert to the last 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.
|
|
|
|
Whilst Git may not be everyone's preferred version control system, it's
|
|
free, has a wealth of documentation, and is easy to install on most
|
|
Unix-like environments.
|
|
|
|
For more information, visit the @uref{https://www.git-scm.com/, , Git
|
|
home page}.
|
|
|
|
@include localgitinstructions.texi
|
|
|
|
@ifset recommendvnc
|
|
@node VNC
|
|
@section VNC
|
|
|
|
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
|
|
architectures. It is already installed on the lab machines.
|
|
For more information, look at the @uref{http://www.realvnc.com/, , VNC
|
|
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 tasks. 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 qemu-emulated console on your Windows desktop.
|
|
@end ifset
|
|
|
|
@localdevelopmenttools{}
|
|
|