Notes
Outline
Linux/g++: Maze solving in CSE326
Linux machines at U. W.
Machine Names: Ceylon, Sumatra, Fiji, Tahiti
http://www.cs.washington.edu/lab/facilities/instr-labs.html
Access
Use X-terminals in back of Sieg 329 (click on one of the linux machine names)
Use Windows machine, ask someone in lab for help
Make project directory
Look at supplied files
Copy Files
Interlude: ‘man’
Look at files in my dir
My files are read-only
chmod (thanks to Nic Bone)
How to make runmaze (the program)
Test run
Run sample solution
Run runmaze with visualization
Edit runmaze.cpp – forgot &
Edit runmaze.cpp
Emacs keys
CTRL-X S (hold down control for both letters)
Save your work
CTRL-X C
Exit emacs
CTRL-G
Abort current command (if you accidentally typed something wrong)
More:
(Quick intro) http://www.cs.washington.edu/education/courses/cse326/00wi/unix/emacs.html
(official documentation) http://www.lns.cornell.edu/public/COMP/info/emacs/emacs_toc.html
Simple change to runmaze.cpp
Re-make program
Run re-made version
Intro to make – project file dependencies
2 lines from Makefile
g++ linking command line
-o runmaze
Call the output file ‘runmaze’ (instead of a.out, which is the default)
-g
Include debugging information, so you can use a debugger
-L/usr/X11R6/lib -lX11
Include X-Windows libraries (for visualization part)
2 lines for runmaze.cpp (well, technically runmaze.o)
g++ compiling flags
-c
Only compile, don’t link – we’ll let make decide when to link.
-Wall
g++ will give us all of the Warnings it can think of.  Maybe it’ll help us find a bug quickly.
-g
Add debugging information.
So you want to add a .h file
Add it to every .o/.cpp that #includes it, directly or indirectly.
Adding a .cpp file
Debugging
Zasha recommends:
add print statements (or cout<<) so you can see what your program is doing.
Make them check a global variable (doDebug), so you can turn them off & on (to turnin for grading)
Learn debugger later.
Or
use gdb (see below)
use xxgdb (has dinky graphical user interface)
start it/set a couple of breakpoints
Run program in gdb
More info
326 Computing page (more info on these tools)
http://www.cs.washington.edu/education/courses/cse326/00wi/computing.html
GNU Info pages
http://www.lns.cornell.edu/public/COMP/info/
Friendly people in lab / other students
man command
osmosis